我已经构建了以下代码:
def pairs(num_list, n):
list1 = []
for num1 in num_list:
for num2 in num_list:
if num1 + num2 == n:
list1.append([num1, num2])
return(list1)
print(pairs([2,3,4,5],7))
输出为:
[[2, 5], [3, 4], [4, 3], [5, 2]]
但我只需要显示非重复对 对于前。 [[2,5],[3,4]](与哪对无关)
我认为我需要更有效地查看数字,如下所示: 第一个循环经过2。第二个循环将其与3、4、5(无2)进行比较 然后第一个循环经过3。第二个循环经过4,5(没有2或3),依此类推。我实际上该如何使用代码?
答案 0 :(得分:1)
这里是一种仅计算右上三角形中的单元格的方法:
def pairs(num_list, n):
for i in range(len(num_list)):
for j in range(i, len(num_list)):
if num_list[i] + num_list[j] == n:
yield [num_list[i], num_list[j]]
lst = [2,3,4,5]
print(list(pairs(lst, 7)))
输出
[[2, 5], [3, 4]]
无收益
def pairs(num_list, n):
res = []
for i in range(len(num_list)):
for j in range(i, len(num_list)):
if num_list[i] + num_list[j] == n:
res.append([num_list[i], num_list[j]])
return res
print(pairs(lst, 7))
yield
可使函数“多次返回”(多次挥手),这不是必需的。