我正在尝试选择长度为n
且具有k
个元素的数组的所有可能子数组。我刚开始使用Python而不确定如何开始使用它。
我知道会有nCk
(n
选择k
),但不知道如何开始。有人可以给我一个我可以使用的提示或方法吗?
$$\frac{n!}{(n-k)!k!$$
答案 0 :(得分:0)
我假设你有一个数组数组 - 像这样: [[0],[0,0],[0] ....]
所有可能的长度为x的子数组都是:
def get_subarrays_of_length(in_array, length):
out_array = []
for item in in_array:
if len(item) == length:
out_array.append(item)
return out_array
这个性能不是很高,如果你有一个大数组,你可能会发现自己处于泡菜中,但是如果我记得的话,python会通过引用传递对象,所以你应该没问题 - 虽然听起来有点像家庭作业。 / p>
答案 1 :(得分:0)
您在寻找itertools.combinations吗?
示例:强>
In [2]: import itertools
In [3]: a = [1,2,3,4]
In [4]: print( list(itertools.combinations( a, 2 )) )
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]