Python 2.6中有兩個非常大的列表(說50000個字符串),a和b。查找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)
Python 2.6中有兩個非常大的列表(說50000個字符串),a和b。查找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)
使用裝置:
c = list(set(a).difference(b))
,或者,如果順序很重要:
set_b = set(b)
c = [i for i in a if i not in set_b]
'list(set(a).difference(b))'只會返回n存在於「a」而不是「b」中的元素,但不存在於「b」中而不存在於「a」中的元素。 – Bonifacio2
@ Bonifacio2:注意到OP的嘗試就是這樣做的;創造不對稱的差異。 –
是的。我認爲問題標題不符合要求。 – Bonifacio2
你可以用做一個列表的副本切片符號:'c = a [:]' –