2014-04-01 42 views
1

Python 2.6中有兩個非常大的列表(說50000個字符串),ab查找Python中列表之間不共同的項目

這裏有兩個選項。哪個更快,爲什麼?有沒有更好的辦法?

c = [i for i in a if i not in b] 

或者......

c = list(a) # I need to preserve a for future use, so this makes a copy 
for x in b: 
    c.remove(x) 
+1

你可以用做一個列表的副本切片符號:'c = a [:]' –

回答

5

使用裝置:

c = list(set(a).difference(b)) 

,或者,如果順序很重要:

set_b = set(b) 
c = [i for i in a if i not in set_b] 
+0

'list(set(a).difference(b))'只會返回n存在於「a」而不是「b」中的元素,但不存在於「b」中而不存在於「a」中的元素。 – Bonifacio2

+0

@ Bonifacio2:注意到OP的嘗試就是這樣做的;創造不對稱的差異。 –

+0

是的。我認爲問題標題不符合要求。 – Bonifacio2

相關問題