ちょうど時間:
In [3]: %timeit sorted(sub_list, lambda a,b: cmp(keys.index(a), keys.index(b)))
100000 loops, best of 3: 6.22 us per loop
In [4]: %timeit sublist = [key for key in keys if key in sub_list]
1000000 loops, best of 3: 1.91 us per loop
編集(その他の方法):
%timeit sorted(sub_list, key=keys.index)
100000 loops, best of 3: 2.8 us per loop
この例ではマクロ (または で呼び出されているもの) を使用していますが、次の方法で自分自身ipython
を使用できます。timeit
import timeit
p = """
keys =['a','c','b','f','e','d','p','t','s','y','h']
sub_list = ['y','b','a','p']"""
s = "sorted(sub_list, lambda a,b: cmp(keys.index(a), keys.index(b)))"
timeit.Timer(stmt=s, setup=p).timeit()
>>> 8.40028386496742
s = "[key for key in keys if key in sub_list]"
timeit.Timer(stmt=s, setup=p).timeit()
>>> 1.9661344551401498
したがって、考えられるすべての方法を試して、最速の方法を選択することができます