Py学习  »  Python

Python中lambda表达式与局部函数的速度测试

Er Harsh Rathore • 5 年前 • 2185 次点击  

我有两个清单:

x = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
y = ['a','b','c','d','e','f','g','h','i','j']

我正在合并这些列表以获得这样的词典:

z = {97: 'a', 98: 'b', 99: 'c', 100: 'd', 101: 'e', 102: 'f', 103: 'g', 104: 'h', 105: 'i', 106: 'j'}

我将在以下人员的帮助下完成这项任务 map 功能。

可以通过两种方式完成:

第一条路:

z = map(lambda a,b : (a+97 , b), x, y)

def fun(a,b): return (a+97, b)
z = dict(map(fun, x, y))

分析:

import timeit

min(timeit.repeat(lambda:dict(map(lambda a,b:(a+97,b),x,y))))

def fun(a,b):
    return (a+97, b)

min(timeit.repeat(lambda:dict(map(fun, x, y))))

上面的代码给出了以下输出:

8.535995744000047个

此代码的时差为 0.45523715700005596 ms . 我被告知lambda表达式与用于提高性能(执行速度)的内联函数相同。

但根据上述结果,这一想法似乎是一个神话。 这些奇怪的时间测试背后有什么特别的原因吗?

我知道完成上述任务的第三种方法。

z = dict([(k+97 , v) for k,v in zip(x, y)])

具有 7.950903342999936 ms ,

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53713
文章 [ 1 ]  |  最新文章 5 年前