Python 检查压缩数据似乎会将其删除

Python 检查压缩数据似乎会将其删除,python,iterator,Python,Iterator,当我检查压缩后的数据时,它的行为就像它已被擦除一样。首先,创建zip对象: numbers = [1, 2, 3] letters = ['a', 'b', 'c'] numbers_letters = zip(numbers, letters) print(list(numbers_letters)) 正如预期的那样,您会看到包含元组的列表: [(1, 'a'), (2, 'b'), (3, 'c')] 但现在: print(list(numbers_letters)) 返回一个空列表

当我检查压缩后的数据时,它的行为就像它已被擦除一样。首先,创建zip对象:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
numbers_letters = zip(numbers, letters) 
print(list(numbers_letters))
正如预期的那样,您会看到包含元组的列表:

[(1, 'a'), (2, 'b'), (3, 'c')]
但现在:

print(list(numbers_letters))

返回一个空列表。我的数据到哪里去了?

迭代器被设计为只动态生成一次数据,而不是更多。

通过这样做:

print(list(numbers_letters))

您第一次耗尽了迭代器。所以,第二次没有什么东西可以重复了

这是因为
zip
在Python3.x中返回一个迭代器。只能在迭代器上迭代一次

我建议使用:

print(list(zip(numbers, letters)))
简单地说,考虑到您对指向 链接列表中的节点(C,C++),一旦遍历列表 使用头部指针时,不能再次使用它从头部开始


没有办法重新设置为从头开始吗?没有。这不是它的工作原理。您需要再次调用zip(),或者存储迭代器并复制它