找出 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)))
所以我需要想办法得到 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)))