📜  Python|配对产品组合

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

Python|配对产品组合

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

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

# Python3 code to demonstrate working of
# Pair Product combinations
# 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))
  
# Pair Product combinations
# Using list comprehension + combinations
res = [(b1 * a1, b2 * a2) for (a1, a2), (b1, b2) in combinations(test_list, 2)] 
  
# printing result
print("The Product pair combinations are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The Product pair combinations are : [(12, 28), (10, 4), (12, 40), (30, 7), (36, 70), (30, 10)]

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

# Python3 code to demonstrate working of
# Pair Product combinations
# Using list comprehension + zip() + operator.mul + 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))
  
# Pair Product combinations
# Using list comprehension + zip() + operator.mul + combinations()
res = [(operator.mul(*a), operator.mul(*b))\
    for a, b in (zip(y, x) for x, y in combinations(test_list, 2))]
  
# printing result
print("The Product pair combinations are : " + str(res))
输出 :
The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The Product pair combinations are : [(12, 28), (10, 4), (12, 40), (30, 7), (36, 70), (30, 10)]