📜  Python – 构造等于 K 的 Sum 对

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

Python – 构造等于 K 的 Sum 对

有时,在使用Python列表时,我们可能会遇到需要提取总和等于 K 的对的问题。这种问题很常见,并且可以应用于 Web 开发和日常编程等领域。让我们讨论可以执行此任务的某些方式。

Input : 
test_list = [1, 9, 5, 5, 7]
K = 10
Output : [(1, 9), (5, 5)]


Input : 
test_list = [1, 9, 7, 8, 3]
K = 12
Output : [(9, 3)]

方法 #1:使用列表理解 + sum()
上述功能的组合可以用来解决这个问题。在此,我们使用 sum() 执行求和等于 K 的任务,列表推导用于逻辑和配对构建。

# Python3 code to demonstrate working of 
# Construct Sum pairs equal to K
# Using list comprehension + sum()
  
# initializing list
test_list = [3, 4, 0, 5, 2]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K
K = 7
  
# Construct Sum pairs equal to K
# Using list comprehension + sum()
res = [(test_list[idx], test_list[j]) for idx in range(len(test_list))
                               for j in range(idx + 1, len(test_list))
                          if sum((test_list[idx], test_list[j])) == K]
  
# printing result 
print("The paired tuples equal to K  : " + str(res)) 
输出 :
The original list is : [3, 4, 0, 5, 2]
The paired tuples equal to K  : [(3, 4), (5, 2)]

方法#2:使用combinations() + sum()
上述功能的组合可以用来解决这个问题。在此组合()中用于形成等于 K 的对。

# Python3 code to demonstrate working of 
# Construct Sum pairs equal to K
# Using combinations() + sum()
from itertools import combinations
  
# initializing list
test_list = [3, 4, 0, 5, 2]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K
K = 7
  
# Construct Sum pairs equal to K
# Using combinations() + sum()
res = [ele for ele in combinations(test_list, 2) if sum(ele) == K]
  
# printing result 
print("The paired tuples equal to K  : " + str(res)) 
输出 :
The original list is : [3, 4, 0, 5, 2]
The paired tuples equal to K  : [(3, 4), (5, 2)]