gpt4 book ai didi

python:从有序列表中排序键子列表的最快方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:54 24 4
gpt4 key购买 nike

我对从一长串键中排序无序键子列表的速度有疑问。所以

keys =['a','c','b','f','e','d','p','t','s','y','h']
sub_list = ['y','b','a','p']

我有两个想法:

sublist = sorted(sub_list, key=keys)

或者,

sublist = [key for key in keys if key in sub_list]

据我所知,可能有比这两种更好的方法。有什么想法吗?

最佳答案

只是时间:

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

所以你可以尝试所有你能想到的方法,选择最快的

关于python:从有序列表中排序键子列表的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com