当前位置:  开发笔记 > 编程语言 > 正文

列表中组合的乘积之和

如何解决《列表中组合的乘积之和》经验,为你挑选了2个好方法。

在给定列表中对所有组合的乘积求和的Pythonic方法是什么,例如:

[1, 2, 3, 4]
--> (1 * 2) + (1 * 3) + (1 * 4) + (2 * 3) + (2 * 4) + (3 * 4) = 35

(对于这个例子,我已经采用了所有的两元素组合,但它可能有所不同.)



1> Avinash Raj..:

使用 itertools.combinations

>>> l = [1, 2, 3, 4]
>>> sum([i*j for i,j in list(itertools.combinations(l, 2))])
35



2> Kevin Guan..:
>>> a = [1, 2, 3, 4]    
>>> import operator
>>> import itertools
>>> sum(itertools.starmap(operator.mul, itertools.combinations(l, 2)))
35

itertools.combinations(a, 2) 收益:

>>> list(itertools.combinations(a, 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
>>> 

并且itertools.starmap():

创建一个迭代器,使用从iterable中获取的参数来计算函数.使用而不是map()在参数参数已经从单个可迭代的元组中分组时(数据已经"预先压缩").

最后,使用sum() 一个发电机的理解,以获得最终结果.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有