删除在返回列表中交换位置的项目

时间:2016-11-25 22:27:35

标签: python list

我的功能需要一个数字和一个数字列表。

如果列表中的2个数字与[Num1, Num2]

形式的原始数字相加

现在我不想要任何“重复”,即我只想要[4, -7]返回,而不是[4, -7], [-7, 4]

def pairs(n, num_list):
    newest_list = []
    for j in range(len(num_list)):
        for i in range(len(num_list)-1):
            if num_list[j] + num_list[i+1] == n:
                newest_list.append([num_list[j], num_list[i+1]])
    return newest_list

现在我想要一个提示,而不是发布代码,这很简单。 我的问题是:

我是否有能力在我的代码中执行此操作,如果是这样,提示会很棒,或者我是否需要定义另一个函数来为我执行此操作?

5 个答案:

答案 0 :(得分:0)

您绝对有能力在代码中执行此操作。

要完成此操作的提示,请考虑在代码中的哪一点停止搜索更多匹配并返回您找到的内容是有意义的。让我知道这是否太神秘了!

答案 1 :(得分:0)

您只需将这两个数字附加到Set中即可在当前代码中执行此操作。有关详情,this会对您有所帮助。

答案 2 :(得分:0)

将一对[a, b]添加到结果列表时,对该对进行排序,然后查看它是否在结果列表中。如果是这样,请不要添加它。

另外,请考虑使用Python set

答案 3 :(得分:0)

如果你有2个列表l1和l2,其中:

l1=[1,2]
l2=[2,1]

如果您将它们转换为套装,您可以对它们进行比较,如果它们具有相同的元素,它们将评估为 True ,无论订单是什么:

set(l1) == set(l2) # this evaluates to True

在您的if条件中,在添加数字之前,您可以检查set([num_list[j], num_list[i+1]])中的newest_list集是否已经存在。

我很想写一些代码,但是你说没有,所以我会把它留在这里:p

答案 4 :(得分:0)

您可以按原样保留代码,但在返回列表之前,您可以filter列表,其中谓词只有在[a,b]对时才接受[b,a]对不在列表中