我怎样才能形成一个数组(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-找到列表交集) –