遍历迭代器会返回相同的值的问题通常发生在重复调用迭代器的情况下。为了解决这个问题,你可以将迭代器的结果存储在一个列表中,然后在需要时对该列表进行遍历。以下是一个示例代码:
my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)
result = list(my_iter) # 将迭代器的结果存储在列表中
for value in result:
print(value)
在这个示例中,我们将迭代器 my_iter
的结果存储在列表 result
中。然后,我们使用 for
循环遍历 result
列表来打印每个值。由于我们只遍历了一次迭代器的结果,所以不会出现重复值的问题。
另外,如果你需要多次遍历迭代器,你可以使用 itertools.tee
函数来创建多个相同的迭代器副本,然后分别遍历这些副本。以下是一个示例代码:
import itertools
my_list = [1, 2, 3, 4, 5]
my_iter1, my_iter2 = itertools.tee(iter(my_list), 2)
for value1 in my_iter1:
print(value1)
for value2 in my_iter2:
print(value2)
在这个示例中,我们使用 itertools.tee
函数创建了两个相同的迭代器副本 my_iter1
和 my_iter2
。然后,我们分别使用两个 for
循环遍历这两个迭代器,打印每个值。由于我们使用了两个独立的迭代器副本,所以不会出现重复值的问题。