生成器上的列表函数删除元素

时间:2019-04-20 17:18:56

标签: python iterator generator sympy iterable

我不明白为什么下面的代码会删除所有元素。我该如何预防?

from sympy.utilities.iterables import variations
x=variations(["H","T"],3, True)
print(list(x))

t=sum(1 for i in x)
print(list(x))

1 个答案:

答案 0 :(得分:1)

可以消耗生成器,这是第3行print(list(x))中发生的事情。解决此问题的一种方法是将其保存为列表,尽管在这种情况下可能有更合适的解决方案。

y = list(x)
print(y)
t = len(y)  # Since y is a list, we can use len
print(y)

还请注意,您可以使用任何生成器来重现此行为。 Sympy不在话下。