2024-05-29 05:26:56 发布
网友
我想知道是否有任何方法可以从一个数字列表中获得长度的所有组合。
例如,如果我的列表是[1, 2, 3, 4],并且我想输出(如果我选择n=3)
[1, 2, 3, 4]
[1, 2, 3] [1, 2, 4] [1, 3, 4] [2, 3, 4]
像[2,1,3]这样的其他排列对我没有用处。
添加递归函数:
def combinations(array, tuple_length, prev_array=[]): if len(prev_array) == tuple_length: return [prev_array] combs = [] for i, val in enumerate(array): prev_array_extended = prev_array.copy() prev_array_extended.append(val) combs += combinations(array[i+1:], tuple_length, prev_array_extended) return combs combinations([1, 2, 3, 4], 3)
输出:
[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]
itertools可以做到这一点
import itertools for comb in itertools.combinations([1, 2, 3, 4], 3): print comb
输出
(1, 2, 3) (1, 2, 4) (1, 3, 4) (2, 3, 4)
添加递归函数:
输出:
itertools可以做到这一点
输出
相关问题 更多 >
编程相关推荐