Python查找重复的数组操作

时间:2012-06-12 17:51:05

标签: python

如何形成由b元素组成的数组(c)?

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

这可以在不使用列表推导的情况下完成吗?

3 个答案:

答案 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]