Python 中索引运算符的快速方法 (lambda i: l[i])
Fast Way of Indexing Operator in Python (lambda i: l[i])
给定一个可索引的数据结构,例如列表 l
,我们怎样才能得到等价于 lambda i: l[i]
的最快函数? lambda 函数的问题在于它是 Python 并且会减慢速度。 operator
模块中有一些内置运算符,但在这种情况下似乎可以使用其中的 none 个。
l.__getitem__
快两倍多,而且因为那是对象自己的方法,我怀疑你能打败它。
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=lambda i:l[i]', number=10**8)
17.013631199999963
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=l.__getitem__', number=10**8)
7.722098399999936
给定一个可索引的数据结构,例如列表 l
,我们怎样才能得到等价于 lambda i: l[i]
的最快函数? lambda 函数的问题在于它是 Python 并且会减慢速度。 operator
模块中有一些内置运算符,但在这种情况下似乎可以使用其中的 none 个。
l.__getitem__
快两倍多,而且因为那是对象自己的方法,我怀疑你能打败它。
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=lambda i:l[i]', number=10**8)
17.013631199999963
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=l.__getitem__', number=10**8)
7.722098399999936