我在python2.7中使用itertools。我想找到所有组合(不重复)。我将长度为30的列表作为可迭代的。虽然我将可迭代对象保存为列表,但它会挂起或需要很长时间。有人可以帮我这个..
#!usr/bin/python
import itertools
a = range(30)
list1 = []
for i in range(30):
list1 = list(itertools.combinations(a,i))
答案 0 :(得分:4)
你在这里要做的是创建一系列元组列表,这些元组总共包含大量元素 - 更具体地说,2 ** 30 = 1,073,741,824个元组,每个元组平均包含15个整数。这是16,106,127,360(十六亿)整数。即使你有足够的记忆来存储它们,显然也需要很长时间。
你可能会从错误的方向来解决你的问题(见the XY problem)。如果您发布一个新问题来解释您实际上试图解决的问题,那么有可能有人可以提供帮助,但就目前情况而言,您的问题归结为“为什么要尝试做一些不合理的大量工作花费了不合理的大量时间?“,没有人可以帮助你。