社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

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

我有两个清单:

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
 
1988 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Iain Shelvington
Reply   •   1 楼
Iain Shelvington    5 年前

使用 min 是一个糟糕的性能度量,因为任何程序的执行速度都会受到计算机上运行的其他进程的影响。一个重要样本的平均值信息量要大得多

为什么羔羊跑得慢

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