这个问题已经有了答案:
当第二次调用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>
你给发电机排气 c 你第一次打电话 set .
c
set
其他例子:
import itertools a = ["aaa", "bbb", "ccc"] b = [True, False] c = itertools.product(a, b) for item in c: print(item) for item in c: print(item)
第二个循环将不打印任何内容。
如果需要在同一个迭代器上迭代两次,可以使用 itertools.tee :
itertools.tee
from itertools import tee c1, c2 = tee(c)
现在有两个独立的迭代器。