>>> import itertools
>>> [list(itertools.combinations(lambdas, i)) for i in range(1, len(lambdas)+1)]
[[(20,), (32,), (18,)], [(20, 32), (20, 18), (32, 18)], [(20, 32, 18)]]
然后您可以sum每个内部tuple添加任何具有多个元素的组合并展平该列表
>>> list(itertools.chain.from_iterable((sum(j) for j in itertools.combinations(lambdas, i)) for i in range(1, len(lambdas)+1)))
[20, 32, 18, 52, 38, 50, 70]
为了更清楚地了解正在发生的事情,这大致相当于以下更具过程性的代码
import itertools
lambdas = [20, 32, 18]
values = []
for size in range(1, len(lambdas)+1):
for comb in itertools.combinations(lambdas, size):
values.append(sum(comb))
>>> print(values)
[20, 32, 18, 52, 38, 50, 70]
您可以使用
itertools.combinations
使所有1
,2
。。。N
原始列表中的长度组合然后您可以
sum
每个内部tuple
添加任何具有多个元素的组合并展平该列表为了更清楚地了解正在发生的事情,这大致相当于以下更具过程性的代码
相关问题 更多 >
编程相关推荐