小编Jan*_*Hak的帖子

创建保留重复值的列表的补充

给定列表a = [1, 2, 2, 3]及其子列表b = [1, 2]找到一个以这样的方式补充b的列表sorted(a) == sorted(b + complement).在上面的例子中,complement将是一个列表[2, 3].

使用列表理解是很诱人的:

complement = [x for x in a if x not in b]
Run Code Online (Sandbox Code Playgroud)

或套装:

complement = list(set(a) - set(b))
Run Code Online (Sandbox Code Playgroud)

但是,这两种方式都会回归complement = [3].

一个显而易见的方法是:

complement = a[:]
for element in b:
    complement.remove(element)
Run Code Online (Sandbox Code Playgroud)

但这感觉非常不满意,而且不是非常Pythonic.我错过了一个明显的习语还是这样?

正如下面指出的那样,性能O(n^2)是否有更有效的方法?

python list

15
推荐指数
2
解决办法
1454
查看次数

标签 统计

list ×1

python ×1