在Python中对多个列表的每个组合求和的最快方法

2024-05-17 05:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有5个包含一些数据的列表:

a = [52, 265, 1, 98, 26]
b = [42, 85, 45, 2, 3, 8, 632]
c = [7, 731, 92, 65, 28, 62]
d = [3, 5, 44, 55]
e = [15, 35, 850, 6, 18, 41]

我要做的是求出每个可能组合的值之和,例如:

^{pr2}$

因此,我需要用最快的方式来计算这些列表的长度。在

我的第一个想法是使用嵌套for循环,但这还不够快。我想用NumPy可以做一些改变和一些魔法来加速这个过程。在


Tags: 数据numpy列表for过程魔法方式pr2
2条回答

对所有组合求和的最快方法是生成它们并求和

print([(x,sum(x)) for x in itertools.product(my_list1,my_list2,my_list3,...)])

但我怀疑秘诀在于不是检查所有产品,而是智能地选择特定值以缩小搜索空间

你想要这样的东西吗?在

a = [52, 265, 1, 98, 26]
b = [42, 85, 45, 2, 3, 8, 632]
c = [7, 731, 92, 65, 28, 62]
d = [3, 5, 44, 55]
e = [15, 35, 850, 6, 18, 41]

import itertools

print(list(map(lambda x:sum(x),itertools.product(a,b,c,d,e))))

输出:

^{pr2}$

相关问题 更多 >