Python|列表中的相互元组减法
有时,在处理数据时,我们可能会遇到需要在列表中的所有元组中执行元组减法的问题。这可以在许多领域中应用。让我们讨论可以执行此任务的某些方式。
方法#1:使用combinations()
+ 列表理解
使用上述功能的组合可以解决此问题。在此,我们使用combinations() 来生成元组之间所有可能的组合,并使用列表推导来提供减法逻辑。
# Python3 code to demonstrate working of
# Mutual tuple subtraction in list
# 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))
# Mutual tuple subtraction in list
# Using list comprehension + combinations
res = [(b1 - a1, b2 - a2) for (a1, a2), (b1, b2) in combinations(test_list, 2)]
# printing result
print("The mutual subtraction tuples are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The mutual subtraction tuples are : [(4, 3), (3, -3), (4, 6), (-1, -6), (0, 3), (1, 9)]
方法 #2:使用列表理解 + zip() + operator.sub + combinations()
上述方法的组合也可以解决这个问题。在此,我们使用 sub() 执行减法任务,类似的索引元素使用 zip() 链接。
# Python3 code to demonstrate working of
# Mutual tuple subtraction in list
# Using list comprehension + zip() + operator.sub + 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))
# Mutual tuple subtraction in list
# Using list comprehension + zip() + operator.sub + combinations()
res = [(operator.sub(*a), operator.sub(*b))\
for a, b in (zip(y, x) for x, y in combinations(test_list, 2))]
# printing result
print("The mutual subtraction tuples are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The mutual subtraction tuples are : [(4, 3), (3, -3), (4, 6), (-1, -6), (0, 3), (1, 9)]