我怎樣才能形成一個數組(c)由不屬於b的元素組成?Python找到重複的數組操作
a=[1,2,"ID123","ID126","ID124","ID125"]
b=[1,"ID123","ID124","ID125","343434","fffgfgf"]
c= []
這可以在不使用列表理解的情況下完成嗎?
我怎樣才能形成一個數組(c)由不屬於b的元素組成?Python找到重複的數組操作
a=[1,2,"ID123","ID126","ID124","ID125"]
b=[1,"ID123","ID124","ID125","343434","fffgfgf"]
c= []
這可以在不使用列表理解的情況下完成嗎?
如果列表很長,你想第一一套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列表不提供直接運算符-
。
+1 – Levon
使用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)
這也將不要一次在內存中生成結果列表(如果這是一個問題)。
下面將做到這一點:
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]
這是你在找什麼:HTTP:/ /stackoverflow.com/questions/5640630/array-filter-in-python –
可以做到沒有列表理解 – Rajeev
[這是否回答你的問題?](http://stackoverflow.com/questions/3697432/python-how-找到列表交集) –