我想从一组N个数字生成长度为k的组合,其中顺序很重要,数字可以替换。例如,如果k = 3,并且N = [1,2,3],则候选输出将包括例如(1,1,1),(2,2,2),(3,2,1) ,(1,2,3)。
我相信我几乎在那里使用以下代码
x = list(itertools.combinations_with_replacement(range(1,4),3)
但是这给出了顺序无关紧要的结果 - 即它认为(1,2,3)与(3,2,1),(2,3,1)等相同等。
非常感谢任何帮助!
答案 0 :(得分:2)
您需要的是product
import itertools
N = [1, 2, 3]
y = list(itertools.product(N, N))
print(y) # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
# ^ ^
# |_______________| he no longer thinks it's the same
现在,根据您的问题,如果k != len(N)
我不想清楚您想做什么,那么我会留给您(切片N
可能吗?)..
答案 1 :(得分:1)
试试这个:
import itertools
x = [1, 2, 3]
list(itertools.product(x, repeat=3))