Python选择k元素形成一个数组

时间:2015-12-24 20:46:26

标签: python arrays algorithm

我正在尝试选择长度为n且具有k个元素的数组的所有可能子数组。我刚开始使用Python而不确定如何开始使用它。

我知道会有nCkn选择k),但不知道如何开始。有人可以给我一个我可以使用的提示或方法吗?

$$\frac{n!}{(n-k)!k!$$

2 个答案:

答案 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)]