找出N个槽中3个数字的所有可能排列[Python]



所以我需要找到一种方法来获得3个数字的所有排列,即1、0和-1当存在N个时隙时。

因此,在有2个插槽(N=2(的情况下,函数将返回:

[
[1,1],
[1,0],
[0,1],
[0,0],
[-1,0],
[0,-1],
[-1,-1],
[1,-1],
[-1,1]
]

类似地,如果N=3,我们会得到一个更长的结果,所以我不打算在这里写出来。

老实说,我不知道如何编写一个函数来实现这一点。如果有人有任何建议,我愿意听取!

值得注意的是:itertools.termutations在这种情况下不起作用,因为如果我超过3个插槽,它只会一无所获。需要找到一个可以在多达10个插槽的情况下工作的解决方案。

这不是关于排列的问题——您希望生成笛卡尔乘积!特别是,您希望生成{-1, 0, 1} x {-1, 0, 1} x {-1, 0, 1} x ... (repeat with n sets)

这个代码片段计算了上面的内容:

n = 2
nums = [-1, 0, 1]
print(list(list(entry) for entry in itertools.product(nums, repeat=n)))

相关内容

最新更新