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)]