在 Python 中,迭代器是一个可以记住遍历的位置的对象。迭代器从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不像列表或者数组,迭代器不会一次性把所有元素加载到内存,而是需要时才生成元素。
迭代器(比如你在代码中使用的 zip_longest
函数返回的对象)是一次性的。这意味着迭代器中的元素在被访问后就会被丢弃,这就是所谓的 “迭代器被耗尽”。如果你试图再次从同一个迭代器中获取元素,你会发现它已经没有元素了,因为它们已经被访问并丢弃了。
例如,考虑以下代码:
my_list = [1, 2, 3]
my_iter = iter(my_list)
for item in my_iter:
print(item)
for item in my_iter:
print(item)
在这个例子中,第一个 for
循环会打印出列表中的所有元素。但是第二个 for
循环不会打印任何东西,因为迭代器已经被耗尽,所有的元素都已经被访问并丢弃了。
所以,如果你想要再次访问迭代器中的元素,你需要重新创建迭代器。希望这个解释能帮助你理解!