【问题标题】:Python selecting k elements form an array [duplicate]Python选择k个元素形成一个数组[重复]
【发布时间】:2015-12-25 04:58:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: python arrays algorithm


    【解决方案1】:

    我假设你有一个数组数组 - 像这样: [[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 通过引用传递对象,所以你应该没问题 - 虽然听起来有点像家庭作业。

    【讨论】:

      【解决方案2】:

      你在找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)]
      

      【讨论】:

        猜你喜欢
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 2023-04-09
        • 2020-03-20
        相关资源
        最近更新 更多