python itertools.combinations已删除

时间:2014-11-12 14:14:39

标签: python variables combinations itertools

我注意到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指定为任何东西。

3 个答案:

答案 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