2016-02-25 93 views
0
list1 = [1,2,3,4,5,6,7,8,9] 
list2 = [10,11,12,13,5,7] 

,現在我想,列表2應板缺在列表1和列表2相同的元素Python的 - 在列表中刪除元素基於另一個列表

- >list2 = [10, 11, 12, 13] 5和7被刪除,因爲他們也是在list1中。

這是我的嘗試:

for i in range(len(list1)): 
    test = list1[i] 
    if test in list2: 
     del list2[list1[i]] 
print(list2) 

但list2中是一樣的:-(

希望你能幫助我 前編輯:對不起,我忘了說,名單已經得到日期在日期時間類型。它仍然可以工作?

+1

只需要創建一個新的列表'新= [X在列表2 x如果X不在列表1]' – georg

+0

合併兩個列表,並使用列表(組(list_name))刪除重複 – Zealous

+1

[刪除所有在另一個列表中出現的元素]可能的重複(http://stackoverflow.com/questions/4211209/remove-all-the-elements-that-occur-in -one-list-from-another) – AlokThakur

回答

2

試試這個,第一投都listset,現在很容易就可以找到兩個set然後抹上結果之間differnce到list和阿西GN,爲list2:當你沒有在列表中重複

list2 = list(set(list2)-set(list1)) 

list2 # [10, 11, 12, 13] 

然而,這僅適用。

+0

它會刪除列表 – AlokThakur

+0

的重複項目@AlokThakur,你的意思是同一個項目在一個列表中? – Arman

+1

如果我有list2 = [10,11,12,13,5,7,10,11,12]和list1 = [1,2,3,4,5,6,7,8,9],那麼結果shouldn不會是[10,11,12,13] – AlokThakur

0

你刪除是錯誤的,你是在指數list1[i]刪除元素list2,而不是刪除list2[index_in_list2]或使用remove這樣list2.remove(list1[i])

for item in list1: 
    if item in list2: 
     list2.remove(item) 
0
list1 = [1,2,3,4,5,6,7,8,9] 
list2 = [10,11,12,13,5,7] 

list2 = [i for i in list2 if not i in list1] 
print list2 
2

你可以做一些簡單的方法:

>>> list1 = [1,2,3,4,5,6,7,8,9] 
>>> list2 = [10,11,12,13,5,7] 
>>> [item for item in list2 if item not in list1] 
[10, 11, 12, 13] 

或者,您可以使用filter,

>>> filter(lambda item: item not in list1, list2) 
[10, 11, 12, 13] 

或者您可以使用generator function這樣,

>>> def diff_list(lst1, lst2): 
...  for item in lst1: 
...   if item not in lst2: 
...   yield item 
... 
>>> list(diff_list(list2, list1)) 
[10, 11, 12, 13] 
相關問題