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

Figure out all possible permutations of 3 numbers in N slots [Python]

所以我需要想办法得到 3 个数字的所有排列,即 1、0 和 -1 当有 N 个插槽时。

所以在有 2 个槽 (N=2) 的情况下,函数将 return:

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

同样,如果 N = 3,我们的结果会更长一些,所以我不打算在这里写出来。

老实说,我不确定如何编写函数来完成此操作。如果有人有任何建议,我会很乐意听取他们的意见!

值得注意:itertools.permutations 在这种情况下不起作用,因为如果我超过 3 个插槽,它只会 return 什么都没有。需要找到一个可以在最多 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)))