Python 在一个元组内的元组之间求和最有效的方法是什么?

Python 在一个元组内的元组之间求和最有效的方法是什么?,python,performance,tuples,itertools,Python,Performance,Tuples,Itertools,本质上,我是在生成一个元组的元组: import datetime import csv from itertools import product, combinations, chain part_1 = { 'a':{2,1,0}, 'b':{3,4,5}, 'c':{7,8,9}, 'd':{10,11,12} } sorted_part_1 = sorted(part_1) result = product(*(part_1[Thing

本质上,我是在生成一个元组的元组:

import datetime
import csv

from itertools import product, combinations, chain

part_1 = {
    'a':{2,1,0},
    'b':{3,4,5},
    'c':{7,8,9},
    'd':{10,11,12}      
}

sorted_part_1 = sorted(part_1)
result = product(*(part_1[Thing] for Thing in sorted_part_1))

# for a in result:
#   print('comb a' + str(a))

comb_list_total = it.combinations(result,4)
(尽管有多个排列顺序。)

我想做的是对每个元组/iterable求和,例如
((2,5,9,11),(2,5,9,12),(2,5,7,10),(2,5,7,11))
-->-->(8,20,32,44)

(我真正想做的是得到聚合元组和预定义元组之间的差异,比如,(50,50,50,50)->(32,30,18,6),最后,求和该差异以确定哪个元组最大化/最小化聚合差异。)

如何对元组执行此数学运算,并有效地将结果映射到原始元组?

先决条件:

iterable_of_tuples = [
    (...),  # tuple 1
    (...),  # tuple 2
    ...
    (...)   # tuple N
]
使用numpy:

import numpy as np

sum_of_all_tuples = tuple(sum(np.array(t) for t in iterable_of_tuples))
纯Python(在长可重用项上可能效率较低):


你介意使用pandas/numpy吗?因为你求和的元组是组合生成的,所以我会寻找一种数学方法来简化求和,而不必显式地计算它。如果我们能够计算出
乘积
中的每个组合应该出现在结果中的次数,那么我们可以用乘法代替加法;同样地,如果我们可以计算出
第1部分中的每个数字在总和中出现的次数。
sum_of_all_tuples = tuple(map(sum, zip(*iterable_of_tuples))))