我认为值得在这里放一些时间以获得一些观点。
使用 python2.7 在 OS-X 10.5.8 上完成的所有计时
约翰克莱门特的回答:
python -m timeit -s 'my_list = range(1000)[::-1]; from operator import itemgetter' 'min(enumerate(my_list),key=itemgetter(1))'
1000 loops, best of 3: 239 usec per loop
大卫沃尔弗的回答:
python -m timeit -s 'my_list = range(1000)[::-1]' 'min((val, idx) for (idx, val) in enumerate(my_list))
1000 loops, best of 3: 345 usec per loop
OP的回答:
python -m timeit -s 'my_list = range(1000)[::-1]' 'my_list.index(min(my_list))'
10000 loops, best of 3: 96.8 usec per loop
请注意,我故意将最小的项目放在列表的最后,以使其.index
尽可能慢。有趣的是,看看迭代一次的答案将与我们在这里的迭代两次答案竞争。
当然,速度并不是一切,而且在大多数情况下,它甚至不值得担心......选择最容易阅读的一个,除非这是您代码中的性能瓶颈(然后在您的典型现实世界中进行分析数据——最好在你的目标机器上)。