【发布时间】:2015-12-25 04:58:33
【问题描述】:
我正在尝试选择长度为 n 且具有 k 元素的数组的所有可能子数组。我刚开始使用 Python,不知道如何开始。
我知道会有nCk(n选择k)但不知道如何开始。谁能给我一个提示或我可以使用的方法?
$$\frac{n!}{(n-k)!k!$$
【问题讨论】:
我正在尝试选择长度为 n 且具有 k 元素的数组的所有可能子数组。我刚开始使用 Python,不知道如何开始。
我知道会有nCk(n选择k)但不知道如何开始。谁能给我一个提示或我可以使用的方法?
$$\frac{n!}{(n-k)!k!$$
【问题讨论】:
我假设你有一个数组数组 - 像这样: [[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 通过引用传递对象,所以你应该没问题 - 虽然听起来有点像家庭作业。
【讨论】:
示例:
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)]
【讨论】: