Python 如何在一个列表中找到一对数字,并将其作为给定的数字求和
几天前,我遇到了一个问题,上面有一个数字列表和一个名为total的值。现在我们需要编写一个程序,给出一个元组列表(元组中只有2个元素),每个元组的和应该等于total的值。示例:以下是输入:Python 如何在一个列表中找到一对数字,并将其作为给定的数字求和,python,python-3.x,list,tuples,combinations,Python,Python 3.x,List,Tuples,Combinations,几天前,我遇到了一个问题,上面有一个数字列表和一个名为total的值。现在我们需要编写一个程序,给出一个元组列表(元组中只有2个元素),每个元组的和应该等于total的值。示例:以下是输入: input = [1,2,3,4,6,7,8,9] total = 10 输出结果如下: output = [(1,9), (2,8), (3,7), (4,6)] 使用列表理解: 注意不要将input用作变量名,因为它会隐藏内置的input()函数 要在不使用itertools的情况下执行此操作,我
input = [1,2,3,4,6,7,8,9]
total = 10
输出结果如下:
output = [(1,9), (2,8), (3,7), (4,6)]
使用列表理解: 注意不要将
input
用作变量名,因为它会隐藏内置的input()
函数
要在不使用itertools的情况下执行此操作,我们可以使用以下列表:
>>> [(inpt[i],inpt[j]) for i in range(len(inpt)) for j in range(i+1, len(inpt)) if sum((inpt[i],inpt[j])) == total]
>>> [(1, 9), (2, 8), (3, 7), (4, 6)]
使用列表理解: 注意不要将
input
用作变量名,因为它会隐藏内置的input()
函数
要在不使用itertools的情况下执行此操作,我们可以使用以下列表:
>>> [(inpt[i],inpt[j]) for i in range(len(inpt)) for j in range(i+1, len(inpt)) if sum((inpt[i],inpt[j])) == total]
>>> [(1, 9), (2, 8), (3, 7), (4, 6)]
您可以找到差异并检查该值是否为剩余列表的一部分,如下所示-
>>> [(index,i) for index,i in enumerate(input)] #how enumerate works
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 6), (5, 7), (6, 8), (7, 9)]
>>> [(i,total-i) for index,i in enumerate(input) if (total-i) in input[index+1:]]
[(1, 9), (2, 8), (3, 7), (4, 6)]
您可以找到差异并检查该值是否为剩余列表的一部分,如下所示-
>>> [(index,i) for index,i in enumerate(input)] #how enumerate works
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 6), (5, 7), (6, 8), (7, 9)]
>>> [(i,total-i) for index,i in enumerate(input) if (total-i) in input[index+1:]]
[(1, 9), (2, 8), (3, 7), (4, 6)]