from itertools import permutations
l = [0, 1, 2, 3, 4]
x = permutations (l, 3)
我得到以下内容:
(0, 1, 2) , (0, 1, 3), ...., (0, 2, 1), (0, 2, 3), (0,2,4),...., (4, 3, 0), (4, 3, 1),
(4, 3, 2)
这是预期的。 但我需要的是:
(0, 0, 0), (0, 0, 1), ...., (0, 0, 4), (0, 1, 0), (0, 1, 1)........
如何实现这一目标?
答案 0 :(得分:2)
您需要的是具有替换或产品的排列,但itertool
permutations
会产生无替换的排列。您可以自己计算产品:
[(x,y,z) for x in l for y in l for z in l]
#[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 0), ...
或者使用itertools
中的同名功能:
list(itertools.product(l,repeat=3))
# [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 0),...
后一种方法更有效。
答案 1 :(得分:1)
您需要使用来自product
模块的permutations
,而不是使用itertools
,例如:
from itertools import product
l = [0, 1, 2, 3, 4]
# Or:
# b = list(product(l, repeat=3))
b = list(product(l,l,l))
print(b)
输出:
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), ..., (4, 4, 1), (4, 4, 2), (4, 4, 3), (4, 4, 4)]
答案 2 :(得分:0)
您需要产品而不是排列
from itertools import product
l = [0, 1, 2, 3, 4]
b = list(product(l, repeat=3))