我使用product
python库中的itertools
方法来计算列表列表中项目的所有排列。举个例子:
>> elems = [[1,2],[4,5],[7,8]]
>> permutations = list(itertools.product(*elems))
>> print permutations
# this prints [(1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8)]
如何在计算每个排列时检查每个排列,而不是一次返回整组排列?我目前面临的问题是我在运行脚本时遇到python Memory Error
,因为生成了太多的排列。我只关心一个排列。如果我可以检查生成的每个排列,我只能存储一个值而不是存储每个可能的排列。这是可能的,如果是这样,我将如何实现这个?
答案 0 :(得分:2)
您可以在for循环中执行此操作,一次一个:
for a_perm in itertools.product(*elems):
print(a_perm)
itertools.product()
为您提供迭代器,您可以一次迭代一个项目。