【发布时间】:2020-01-14 18:12:48
【问题描述】:
给定一个可索引的数据结构,如列表l,我们怎样才能得到最快的函数,相当于lambda i: l[i]? lambda 函数的问题在于它是 Python 并且会减慢速度。 operator 模块中有一些内置运算符,但在这种情况下似乎没有一个可以使用。
【问题讨论】:
-
l.__getitem__? -
我认为你很难找到比这更快的函数。从技术上讲你可以做
l.__getitem__,但我怀疑这会更快(当然它会足够接近你可以做的任何基准测试的误差范围内),并且调用伪私有方法是不好的做法(名称以两个下划线开头和结尾的那些)直接。 -
@mypetlion
l.__getitem__在我的测试中是 7.5 秒和 16.3 秒(对于 1e8 调用)的两倍多。 -
如果您担心速度,首先重复索引列表可能是错误的方法。