- 此问题在此处已有答案**:
Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
四年前关闭了。
第二次调用set(c)时,显示空集,清除数据,但第一次运行正常,对象地址也相同。
>>> import itertools
>>> a = ["aaa", "bbb", "ccc"]
>>> b = [True, False]
>>> c = itertools.product(a, b)
>>> c
<itertools.product object at 0x7f7bbca23050>
>>> set(c)
set([('bbb', True), ('ccc', True), ('ccc', False), ('aaa', True), ('bbb', False), ('aaa', False)])
>>> set(c)
set([])
>>> c
<itertools.product object at 0x7f7bbca23050>
1条答案
按热度按时间0s7z1bwu1#
在第一次调用
set
时耗尽生成器c
。其他示例:
第二个循环将不打印任何内容。
如果你需要在同一个迭代器上迭代两次,你可以使用
itertools.tee
:现在你有两个独立的迭代器。