我有一个查找列表所有组合的函数:
def GetRulesCombinations(selected_list, start_index , end_index):
AllCombinations=[]
for i in range(start_index, end_index+1):
AllCombinations.extend(itertools.combinations(selected_list, i))
AllCombinations = [list(x) for x in AllCombinations]
return AllCombinations
示例:
comb = GetRulesCombinations(range(5), 1,3)
comb = [[0],[1],...,[0, 1], [0, 2],...,[0, 1, 2], [0, 1, 3],...]
我得到了这个:
807 for i in range(start_index, end_index+1):
--> 808 AllCombinations.extend(itertools.combinations(selected_list, i))
809
810 AllCombinations = [list(x) for x in AllCombinations]
MemoryError:
有什么办法可以避免这种情况吗?感谢帮助。
顺便说一下,我正在做像
这样的事情GetRulesCombinations(range(27), 16,27)
len(GetRulesCombinations(range(27),16,27))
29666704