生成器上的list函数删除元素

问题描述 投票:0回答:1

我不明白为什么下面的代码删除所有元素。我该怎样预防呢?

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))
python iterator generator sympy iterable
1个回答
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与此无关。

© www.soinside.com 2019 - 2024. All rights reserved.