2017-08-04 37 views
-2

我的問題是:我有這樣的名單:Python如何刪除子列表並排重複?

[['x', '2', 'NOT'], [['sw'], ['y', '1', 'P12'], ['sw']], [['sw'], 
['y', '2', 'NOT'], ['sw']], ['x', 'P01'], ['y', 'Xt']] 

我想刪除,當他們並排顯示的元素複製。 實施例:[ 'SW']],[[ 'SW']

最終的結果應該是:

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['y', '2', 'NOT'], ['sw'], 
['x', 'P01'], ['y', 'Xt']] 

我已經嘗試了很多,但我能做到這一點。

+0

第一步是使您的列表嵌套統一。 [最近的問題](https://stackoverflow.com/questions/45502776/partial-list-flattening-in-python)的答案顯示瞭如何做到這一點。然後你可以搜索相鄰的副本。一種方法是使用['groupby'](https://docs.python.org/3/library/itertools.html#itertools.groupby) –

+0

你輸入的內容是錯誤的。這兩個元素['sw']] [['sw']屬於兩個不同的嵌套列表,因此它們不是並排的。你有一個列表中嵌套列表作爲元素的大列表。你想要達到什麼目的?用獨特的元素創建一個大列表? –

+0

@MichailN我的翻譯不是抱怨... –

回答

0

要刪除重複的元素,

mylist=[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
print (mylist) 

newlist=[] 
for i, e in enumerate(mylist): 
    try: 
     if not (mylist[i-1] == mylist[i] or mylist[i] == mylist[i+1]): 
      newlist.append(e) 
    except IndexError: 
     newlist.append(e) 

print (newlist) 

給人的結果

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01']] 
+0

Simon is working !!!非常感謝你!!!我有這個問題好幾天了。 –

+0

Simon,爲什麼不打印最後一個元素?我仍然是編程新手,我有點迷路。 –

+0

我更新了代碼(這是異常處理),這將會拋出最後一個元素,所以需要將此元素添加到列表中,而不是僅僅繼續 –

0

可與列表理解這樣做,枚舉(獲得索引)

mylist=[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
print (mylist) 

newlist=[e for i, e in enumerate(mylist) if mylist[i-1] != mylist[i]] 
print (newlist) 

下面是輸出

[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
[['x', '2', 'NOT'], ['sw'], ['y', '1', 'P12'], ['sw'], ['y', '2', 'NOT'], ['sw'], ['x', 'P01'], ['y', 'Xt']] 
+0

問題是,當我有重複的元素時,我需要刪除這兩個。並獲得以下內容: [['x','2','NOT'],['sw'],['y','1','P12'],['y','2', 'NOT'],['sw'],['x','P01'],['y', 'Xt']] –