如何解决 Python 3.6 itertools 错误?

How can is solve Python 3.6 itertools error?

所以,我有这个非常非常基本的代码:

t = [1, 2, 3, 4, 5, 6, 7, 8, 9, ... 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,90]
c = list(itertools.combinations(t, 5))
print(c)

当我 运行 这需要大约 15 秒,然后它给出以下错误:

Traceback (most recent call last):
  File "H:/<path>/main.py", line 13, in <module>
    print(c)
OSError: [Errno 22] Invalid argument

但是,当我 运行 此代码时:

t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10]
c = list(itertools.combinations(t, 5))
print(c)

它没有给我任何错误,而是我想要的输出是:

[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 4, 7), ... (10, 7, 8, 9, 10), (6, 7, 8, 9, 10)]

为什么它不适用于列表 t 中的更多号码?

我不坚持 itertools 所以你可以给我看另一个这样做的例子。它只需要不重复地给出每个组合。

试试这个:

t = range(1, 91)
c = itertools.combinations(t, 5)

for i in c:
    print(i)

它 运行 在我的计算机中大约 10 分钟,并使用最后一个组合正确完成 (86, 87, 88, 89, 90)

不同的是我没有创建列表,所以c是一个生成器,i. e.它一次只生成 1 个组合,我立即打印出来。