2014-05-02 134 views
-6

我試圖打印第二個列表而不打印第二個重複項。我想我可以使用x.remove(list),但它不起作用。有什麼建議麼?如何從字符串/混合列表中刪除重複項

x = [] #initiate empty string 
    counter = {} 

    while list != "DONE": 
     list = input() #keep asking for input 

     for i in x: 
      if not i in counter: 
       x.append(list) 
      else: 
       x.remove(list) 
+1

當你說它不起作用,你需要更具體。你期望發生什麼?究竟發生了什麼? –

+2

這裏有幾個問題。縮進是錯誤的。你使用'list'作爲變量名稱。在定義它之前,你正在訪問它(只能用,因爲'list'恰好是一個內置的名字)。您正在使用一個始終保持空白的字典「計數器」。你的問題很混亂。什麼「第二名單」?什麼是「第二副本」?什麼「不起作用」? –

+0

請僅用示例輸入和輸出來解釋應該發生什麼。謝謝。 – sshashank124

回答

0

我覺得這是你想達到什麼目的:

x = [] 
while True: 
    data = input() 
    if data.lower() == "done": 
     break 
    if data not in x: 
     x.append(data) 

的使用注意事項的while Truebreak,以避免有兩個input調用。

或者,使用set

x = set() 
while True: 
    data = input() 
    if data.lower() == "done": 
     break 
    x.add(data) 
x = list(x) 

這會悄悄忽略嘗試添加重複。

如果你真的希望允許用戶通過輸入他們的第二時間x刪除項目,您可以添加else和使用remove(用於列表)或discard(該組),例如:

x = set() # or [] 
while True: 
    data = input() 
    if data.lower() == "done": 
     break 
    if data in x: 
     x.discard(data) # or .remove(data) 
    else: 
     x.add(data) # or .append(data) 
0

如果您不想在列表中重複你可以使用:

In [38]: l1 = [1,2,1,2,1,2] 

In [39]: l2= list(set(l1)) 

In [40]: l2 
Out[40]: [1, 2]