在for循环中,zip对象是否只能作为对象本身使用?在
我希望我能得到一些解释,为什么其他类型(比如variable,list)在实际上是同一事物时不能使用。在
x = [1, 2, 3]
y = ['a', 'b', 'c']
obj1 = zip(x, y)
odj2 = list(zip(x, y))
# working properly
for a, b in zip(x, y):
print(a)
print(b)
# doesn't work and don't know why
for a, b in obj1:
print(a)
print(b)
for a, b in obj2:
print(a)
print(b)
那么,在for循环中,我是否必须使用zip对象作为自身的zip函数呢?在
提前谢谢你!在
如果您从一开始就运行所提供的代码,它就可以工作(除了
odj2
应该是obj2
)。在混淆的原因是
zip
对象是一个迭代器。它不在内存中存储元素,而是根据需要动态生成它们。您不能访问以前的元素或重新启动迭代器;相反,您必须构造一个新的迭代器。因此,如果您发现自己需要多次迭代这些序列,那么应该将它们转换为持久数据结构,例如lists
。例如:输出:
^{pr2}$与使用
^{3}$zip
对象创建list
的情况相比:输出:
所发生的是,您在某个地方迭代了
obj1
,然后在没有创建新的zip
对象的情况下,再次尝试遍历它。由于已经完全耗尽,for
循环没有可迭代的内容。在相关问题 更多 >
编程相关推荐