我注意到Python中的itertools.combinations对象似乎可以自行删除:
>>> import itertools
>>> x = itertools.combinations( 'ABCD', 2 )
>>> print list( x )
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
>>> print list( x )
[]
为什么对象x在这里改变了?我还没有将x指定为任何东西。
答案 0 :(得分:4)
您正在创建生成器。如果您想稍后使用这些值,请将它们保存到列表中:
>>> import itertools
>>> x = itertools.combinations( 'ABCD', 2 )
>>> list_of_x = list( x )
>>> print(list_of_x)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
>>> print(list_of_x)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
答案 1 :(得分:1)
itertools.combinations
(以及许多其他itertools
方法)返回生成器表达式。生成器只能读取一次。
您可以阅读有关生成器here
的更多信息答案 2 :(得分:0)
Iterator
仅适用一次。
您无法再次使用iterator
对象。
Iterator作为generators
工作,包括next()
函数并引发Stop Iteration
错误,
你可以阅读它here