【python】生成式与 lambda 的区别和联系

生成式与 lambda

  生成式(comprehensions),又叫推导式,是 python 中生成有规律的数据的一种简洁表示方法(生成式怎么使用?)。lambda 函数作为 python 中常用的匿名函数,在编程中也备受青睐。二者都是面试中常见的问题。

一、区别

生成式用于生成变量的数据,往往需要赋值给一个变量,本质上是通过遍历给变量元素赋值。

>>> x = [i**2 for i in range(10)]
>>> y = []
>>> for i in range(10): y.append(i**2)
... 
>>> x; y; x==y
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
True

lambda 用于表示简易的数学映射,本质上是一个简写了的计算函数。

>>> f = lambda x:x**2                                         
>>> f
<function <lambda> at 0x000001F676E14D30>
>>> type(f)
<class 'function'>
>>> f(5)
25

二、联系

都是 python 中的简化表示方法,往往都只有一行,都是面试中经常被问到的问题。生成式中有时会使用 lambda 函数来实现更为复杂的逻辑。比如:

>>> [(lambda x:x**2 if x%2==1 else x)(i) for i in range(10)] 
[0, 1, 2, 9, 4, 25, 6, 49, 8, 81]

推荐阅读:

【python】生成式与生成器的区别和联系
【python】生成式的使用

Guess you like

Origin blog.csdn.net/weixin_44844635/article/details/131379538