如何形成由b元素组成的数组(c)?
a=[1,2,"ID123","ID126","ID124","ID125"]
b=[1,"ID123","ID124","ID125","343434","fffgfgf"]
c= []
这可以在不使用列表推导的情况下完成吗?
答案 0 :(得分:6)
如果列表很长,您想首先制作一组a
:
a_set = set(a)
c = [x for x in b if x not in a_set]
如果元素的顺序无关紧要,那么只需使用集合:
c = list(set(b) - set(a))
Python列表不像Ruby数组那样提供直接-
运算符。
答案 1 :(得分: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)
这也不会在内存中一次性生成结果列表(如果需要考虑的话)。
答案 2 :(得分: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]