python - 从 Python 中的对象列表中删除对象的最快或最惯用的方法

标签 python performance list

假设我有一个 L 列表,其中包含 unknown 对象,从 O1On,我想删除另一个对象引用 M可能 引用 L 中的一个对象,我已经设法使用:

L = [ O1, O2, ... On]

...

L = [ j for j in L if j not in [ M ] ]

这很可爱而且很地道...但是我不得不经常这样做,我想知道是否有另一种更地道的方式,或者是否有更快的方式。

重点是对象列表未知可能可能不包含要排除的对象。我想尽可能避免扩展或子类化对象。

最佳答案

list.remove 似乎是最快的方法,列表理解是第二快的,filter 最后。

这是 timeit 结果

In: python -m timeit '[x for x in [1,2,3,4,5] if x not in [4]]'
Out: 1000000 loops, best of 3: 0.285 usec per loop

In: python -m timeit '[x for x in [1,2,3,4,5] if x != 4]'
Out: 1000000 loops, best of 3: 0.254 usec per loop

In: python -m timeit 'filter(lambda x: x not in [4], [1,2,3,4,5])'
Out: 1000000 loops, best of 3: 0.577 usec per loop

In: python -m timeit 'filter(lambda x: x != 4, [1,2,3,4,5])'
Out: 1000000 loops, best of 3: 0.569 usec per loop

In: python -m timeit '[1,2,3,4,5].remove(4)'
Out: 10000000 loops, best of 3: 0.132 usec per loop

关于python - 从 Python 中的对象列表中删除对象的最快或最惯用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931942/

相关文章:

python - 如何修复 : 'TypeError: expected string or bytes-like object' when doing unit test on a views. py 函数

python - 日期时间 : conversion from string with timezone name not working

python - 使用 mplayer 播放视频

c# - 如何迭代子列表中的元素,然后从列表中删除子列表?性能卓越

javascript - MongoDB插入多个文档,其中可能有重复的_id

python - 元素无序时匹配列表

python - 如何删除 Pandas 数据框中特定日期的行?

performance - Hadoop MapReduce 吞吐量问题

c# - 根据键对字典列表进行排序

python - 根据具有重复值的列表重新排序 Pandas 数据框