【发布时间】:2015-07-01 23:37:23
【问题描述】:
我在 Python 3.4.3 中遇到了一个奇怪的问题,似乎没有在任何地方提及。
让我们说:a = [1,2,3,4] 和 b = [5,6,7,8]
垂直连接这些:ab = zip(a,b)
在 python 3 中,ab 本身会返回:
压缩对象在(一些十六进制数)
在这里,在 python 3 中,检索连接列表:aabb = list(ab)
现在问题来了,aabb 第一次确实会返回一个真实的列表:[(1, 5), (2, 6), (3, 7), (4, 8)]
但是,如果您再次执行整个过程,list(aabb) 将只返回一个空的 [] 容器,就像 list() 会做的那样。
只有在我重新启动 shell/解释器后它才能再次工作。
这是正常现象还是错误?
编辑:好吧,伙计们,我没有意识到这与zip有关,它似乎是恒定的,因为ab每次都返回相同的十六进制值,所以我认为这与@有关987654334@.
无论如何,通过重新分配ab = zip(ab)解决了
根据我对答案和原始链接的理解,ab 一经阅读就会被处置。
【问题讨论】:
-
@vaultah 我在文档的那个部分中没有看到
list(list(zip([1,2,3,4], [5,6,7,8]))) == []的任何地方。也许你能解释一下? @DonD,这就是你要说的? -
@vaultah 请详细说明,它没有说明为什么它只工作一次。为什么我一发布它就被否决了。
-
@vaultah 最大的问题是
list(aabb)不返回空列表,因为参数是填充列表而不是空迭代器。该问题说明了一个不正确的问题,没有完整的代码示例。 -
@dbliss 这是一个错误的陈述。