2016-11-25 43 views
1

我的功能需要一個數字和一個數字列表。刪除在返回列表中交換位置的項目

如果列表中的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 

現在我想提示而不是代碼發佈,一個簡單的。 我的問題是:

我是否有能力在我的代碼中做到這一點,如果是這樣,一個提示將是偉大的,或者我需要定義另一個函數來爲我做這件事?

回答

0

你絕對有能力在你的代碼中做到這一點。

提示完成此操作將考慮您的代碼中的哪個點停止搜索進一步的匹配並返回您找到的內容。讓我知道如果這太神祕了!

0

只需將這兩個數字附加到Set中,您仍然可以在當前代碼中執行此操作。欲瞭解更多信息,this將幫助你。

+0

有沒有辦法拿出一個集合中的元素,並把它們的格式[NUM1,NUM2]成一個列表? – RonaldB

+0

@RonaldB是的..假設你有這個集合'my_set = set([1,2,3,4])'。爲了將它轉換回列表,你只需要這個'my_list = list(my_set)' – eshirima

0

將一對[a, b]添加到結果列表中時,對該對進行排序,然後查看它是否在結果列表中。如果是這樣,請不要添加它。另外,考慮使用Python set

0

,如果你有2所列出L1和L2其中:

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

如果將它們轉換成集,可以對它們進行比較,如果他們有相同的元素,無論他們將評估爲順序是什麼:

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

在你if條件,附加的數字之前,您可以檢查組set([num_list[j], num_list[i+1]])已經在newest_list

我很想寫一些代碼,但你說沒有,所以我會離開這裏:P

+0

OP在'newest_list'中存儲元組不會設置 – smac89

+0

@ smac89這就是爲什麼我寫set(l1)== set(l2)寫作l1 = l2 – JesusAlvSoto

0

您可以留下您的代碼,事情是這樣的,但是你返回列表之前,你可以filter與謂詞的列表中對[a,b]才能被接受,如果對[b,a]不在列表