[英]Python: Creating a list of pairs using list comprehensions? What's the syntax?
[英]Creating a list of pairs python
我已经构建了以下代码:
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)等等。 我怎么能用代码来做到这一点?
这是一种仅计算右上角三角形中的单元格的方法:
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
让一个函数“多次返回”(大量的挥手),这是没有必要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.