-2

我在 python2.7 中使用 itertools。我想找到所有组合(不重复)。我有长度为 30 的列表作为可迭代的。虽然我将可迭代对象保存为列表,但它挂起或需要很长时间。有人可以帮我解决这个问题吗..

#!usr/bin/python
import itertools
a = range(30)
list1 = []
for i in range(30):
    list1 = list(itertools.combinations(a,i))
4

1 回答 1

4

您在这里要做的是创建一系列包含大量元素的元组列表 - 更具体地说,2**30 = 1,073,741,824 个元组,每个元组平均包含 15 个整数。那是 16,106,127,360(160 亿)个整数。即使你有足够的内存来存储它们,显然也需要很长时间。

很有可能您是从错误的方向来解决问题的(请参阅XY 问题)。如果您发布一个新问题来解释您实际尝试解决的问题,那么有人可能会提供帮助,但就目前而言,您的问题归结为“为什么要尝试做大量不合理的工作花费不合理的大量时间?”,没有人可以帮助您。

于 2013-10-23T14:49:23.540 回答