在Python中根据索引查找列表项

3 投票
1 回答
2351 浏览
提问于 2025-04-17 14:19

有没有其他更快的方法来找到特定位置的项目呢?

items = ['aaa','sss','ddd','fff','gggg','hhhh']
indices = [1,3,4]

My way: 
[items[i] for i in indices]

1 个回答

8

如果你一直在使用相同的索引,使用 operator.itemgetter 可能会更好:

getter = itemgetter(1,3,4)
desired = getter(items)

根据我简单的测试,itemgetter 的速度大约快了 2.5 倍(不过我没有测量一开始构建 getter 函数需要多长时间)。

>>> items = ['aaa','sss','ddd','fff','gggg','hhhh']
>>> indices = [1,3,4]
>>> from operator import itemgetter
>>> import timeit
>>> getter = itemgetter(*indices)
>>> def list_comp(items=items,indices=indices):
...     return [items[i] for i in indices]
... 
>>> timeit.timeit('getter(items)','from __main__ import getter,items')
0.2926821708679199
>>> timeit.timeit('list_comp()','from __main__ import list_comp')
0.7736802101135254
>>> getter(items)
('sss', 'fff', 'gggg')
>>> list_comp()
['sss', 'fff', 'gggg']

撰写回答