python - 在 Python 中查找与条件匹配的最后一项

标签 python

https://stackoverflow.com/a/9868665/433570找到第一项。

在应用上面的解决方案之前,我可以考虑先做reverse。 但是我最终会得到两个可以避免的 reverse

有没有比使用两个 reversenext 更好的解决方案?

最佳答案

我不想反转列表,这可能是一个冗长的操作 (l.reverse()),因为它反转了整个列表,我只是使用 < strong>reversed iterator reversed(l) 使用任何你想要的匹配方法,因为你可以在第一次匹配时提前停止,与反转整个列表相比,它可以节省你的时间。

当然,这两种方法都有最好的情况和最坏的情况,下面可能会根据匹配项在列表中的位置(例如接近结尾、开头或中间)给你一个想法

In [1]: l = range(0, 100000)

In [2]: %timeit next((i for i in reversed(l) if i == 1), None)
100 loops, best of 3: 2.94 ms per loop

In [3]: %timeit next((i for i in reversed(l) if i == 50000), None)
1000 loops, best of 3: 1.39 ms per loop

In [4]: %timeit next((i for i in reversed(l) if i == 99000), None)
10000 loops, best of 3: 29.4 µs per loop

下面是反转同一个列表需要多长时间的想法:

In [5]: %timeit l.reverse()
10000 loops, best of 3: 71.5 µs per loop

注意:我在 Python 2 上面运行,所以 range() 是一个列表而不是迭代器,所以不需要 list(range ()) 它使比较有值(value)。

关于python - 在 Python 中查找与条件匹配的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37966943/

相关文章:

python - 无法使用 pip 安装 openpifpaf 和 pycocotools。错误: Failed building wheel for openpifpaf/pycocotools

Python Selenium 如何单击特定文本旁边的按钮?

python - 在 Django Rest Framework 中序列化字符串而不进行更改?

python - 是否可以将来自Python的数据存储在Access文件中?

java - Storm DRPC 中的更新与请求-回复

python相关矩阵不同组合

python - 如何在条形图中从一列列表中绘制词频

python - Django + uWSGI + nginx = 奇怪的缓存?

python - 如何制作特定对象的python数组

用于 .NET 安装的 Python : Could not load file or assembly 'clr.pyd'