繁体   English   中英

创建对 python 的列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM