2012-06-12 56 views
0

我怎樣才能形成一個數組(c)由不屬於b的元素組成?Python找到重複的數組操作

a=[1,2,"ID123","ID126","ID124","ID125"] 
b=[1,"ID123","ID124","ID125","343434","fffgfgf"] 
c= [] 

這可以在不使用列表理解的情況下完成嗎?

+0

這是你在找什麼:HTTP:/ /stackoverflow.com/questions/5640630/array-filter-in-python –

+0

可以做到沒有列表理解 – Rajeev

+0

[這是否回答你的問題?](http://stackoverflow.com/questions/3697432/python-how-找到列表交集) –

回答

6

如果列表很長,你想第一一套a

a_set = set(a) 
c = [x for x in b if x not in a_set] 

如果元素的順序並不重要,那麼就使用集:

c = list(set(b) - set(a)) 

就像Ruby數組一樣,Python列表不提供直接運算符-

+0

+1 – Levon

1

使用list comprehension最直截了當:

[i for i in b if i not in a] 
c 
['343434', 'fffgfgf'] 

然而,如果你真的希望使用列表理解,你可以使用一個generator expression

c = (i for i in b if i not in a) 

這也將不要一次在內存中生成結果列表(如果這是一個問題)。

0

下面將做到這一點:

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

如果a很長,它可能會提高性能把它變成一組:

a_set = set(a) 
c = [v for v in b if v not in a_set]