gpt4 book ai didi

python - For循环不打印项目

转载 作者:行者123 更新时间:2023-11-30 22:39:58 25 4
gpt4 key购买 nike

我正在使用 itertools 生成组合,并尝试打印每个组合。
for 循环和列表理解在这个简单的任务中都失败了。

In [1]: from itertools import combinations

In [2]: combos = combinations(range(3), 2)

In [3]: list(combos)
Out[3]: [(0, 1), (0, 2), (1, 2)]

In [4]: for comb in combos:
...: print(comb)

In [5]: [comb for comb in combos]
Out[5]: []

关于为什么我看不到所有组合有什么想法吗?

最佳答案

这是一个 iterator 。你用 list(combos) 耗尽了它。之后它的元素为零,因此没有 comb左侧显示:

>>> import itertools
>>> combos = itertools.combinations(range(3),2)
>>> combos
<itertools.combinations object at 0x0000000004BB66D8>
>>> list(combos)
[(0, 1), (0, 2), (1, 2)]
>>> combos.next()
Traceback (most recent call last):
File "<input>", line 1, in <module>
StopIteration
>>> len(combos)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: object of type 'itertools.combinations' has no len()

combos不是列表。这是一个iterator ...一旦您完成所有术语,它就会抛出 StopIteration异常(exception),但是 list comprehension和一个 for loop均以 StopIteration 结尾,所以它们只运行零次。

但是,您可以这样做:

combos = list(itertools.combinations(range(3),2))

这会将其转换为列表,并且可以无限地遍历列表。

关于python - For循环不打印项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42992080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com