bla*_*ned 7 python functional-programming python-3.x
在给定列表中对所有组合的乘积求和的Pythonic方法是什么,例如:
[1, 2, 3, 4]
--> (1 * 2) + (1 * 3) + (1 * 4) + (2 * 3) + (2 * 4) + (3 * 4) = 35
Run Code Online (Sandbox Code Playgroud)
(对于这个例子,我已经采用了所有的两元素组合,但它可能有所不同.)
Avi*_*Raj 10
使用 itertools.combinations
>>> l = [1, 2, 3, 4]
>>> sum([i*j for i,j in list(itertools.combinations(l, 2))])
35
Run Code Online (Sandbox Code Playgroud)
>>> a = [1, 2, 3, 4]
>>> import operator
>>> import itertools
>>> sum(itertools.starmap(operator.mul, itertools.combinations(l, 2)))
35
Run Code Online (Sandbox Code Playgroud)
itertools.combinations(a, 2)
收益:
>>> list(itertools.combinations(a, 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
>>>
Run Code Online (Sandbox Code Playgroud)
创建一个迭代器,使用从iterable中获取的参数来计算函数.使用而不是
map()
在参数参数已经从单个可迭代的元组中分组时(数据已经"预先压缩").