如何解决 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 个组合,我立即打印出来。
所以,我有这个非常非常基本的代码:
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 个组合,我立即打印出来。