Si vous utilisez les mêmes indices sur et plus, vous pourriez faire mieux avec operator.itemgetter
:
getter = itemgetter(1,3,4)
desired = getter(items)
Selon mon simple, de référence, itemgetter
est d'environ 2,5 fois plus rapide (mais je n » t temps combien de temps il faut pour construire réellement la fonction getter
pour commencer).
>>> 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']
Est-ce un goulot d'étranglement dans votre application? À quoi ressemblent les 'items',' indices' typiques? – jfs