📜  Python – sum 与元组列表中的元组的组合

📅  最后修改于: 2022-05-13 01:55:18.198000             🧑  作者: Mango

Python – sum 与元组列表中的元组的组合

有时,在处理数据时,我们可能会遇到需要在列表中的所有元组中执行元组加法的问题。这可以在许多领域中应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用combinations() + 列表理解
使用上述功能的组合可以解决此问题。在此,我们使用combinations() 来生成元组之间所有可能的组合,并使用列表推导来提供加法逻辑。

# Python3 code to demonstrate working of
# Summation combination in tuple lists
# Using list comprehension + combinations
from itertools import combinations
  
# initialize list 
test_list = [(2, 4), (6, 7), (5, 1), (6, 10)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Summation combination in tuple lists
# Using list comprehension + combinations
res = [(b1 + a1, b2 + a2) for (a1, a2), (b1, b2) in combinations(test_list, 2)] 
  
# printing result
print("The Summation combinations are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The Summation combinations are : [(8, 11), (7, 5), (8, 14), (11, 8), (12, 17), (11, 11)]

方法 #2:使用列表理解 + zip() + operator.add + combinations()
上述方法的组合也可以解决这个问题。在此,我们使用 add() 执行添加任务,类似的索引元素使用 zip() 链接。

# Python3 code to demonstrate working of
# Summation combination in tuple lists
# Using list comprehension + zip() + operator.add + combinations()
from itertools import combinations
import operator
  
# initialize list 
test_list = [(2, 4), (6, 7), (5, 1), (6, 10)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Summation combination in tuple lists
# Using list comprehension + zip() + operator.add + combinations()
res = [(operator.add(*a), operator.add(*b))\
    for a, b in (zip(y, x) for x, y in combinations(test_list, 2))]
  
# printing result
print("The Summation combinations are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The Summation combinations are : [(8, 11), (7, 5), (8, 14), (11, 8), (12, 17), (11, 11)]