/sf/answers/690806581/找到第一项.
reverse在应用上述解决方案之前,我可以考虑先做.但后来我最终reverse会得到两个可能被避免的东西.
难道还有比使用两个更好的解决方案reverse和next?
而不是反转列表,这可能是一个冗长的操作(l.reverse()),因为它反转整个列表,我只是使用一个反向迭代器 reversed(l)与你想要的任何匹配方法,因为你可以在第一场比赛提前停止,它可以节省你时间vs逆转整个列表.
当然,对于这两种方法都有最好的情况和最坏的情况,下面可能根据匹配在列表中的位置给出一个想法(例如,朝向结束,开始或中间)
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
Run Code Online (Sandbox Code Playgroud)
下面是反转相同列表需要多长时间的想法:
In [5]: %timeit l.reverse()
10000 loops, best of 3: 71.5 µs per loop
Run Code Online (Sandbox Code Playgroud)
注意:我在Python 2上面运行,因此range()列表不是迭代器,所以不需要list(range())它来进行比较是值得的.
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |