Python学习第六篇:lambda 表达式
Posted Goodric
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习第六篇:lambda 表达式相关的知识,希望对你有一定的参考价值。
Python学习第六篇:lambda 表达式
——
活动地址:CSDN21天学习挑战赛
lambda函数
Python中使用lambda表达式表示匿名函数,允许用lambda关键字创造"匿名函数",可以不给函数分配名称。匿名是不需要以标准的方式来声明,像 def 语句的标准方式。
作为函数,也有其参数,语法格式:
lambda 参数列表: lambda体
——
lambda 函数与 def 函数对比
以简单的代码为例:
add1 = lambda x,y:x+y
def add2(x,y):
return x+y
print(add1(10,20))
print(add2(10,20))
可以看到,lambda 和 def 所创建的函数功能是一样的。
lambda表达式中,x,y
相当于传入的参数,整个函数会返回x+y
的值
一个完整的 lambda"语句"代表了一个表达式,这个表达式的定义体必须和声明放在同一行
区别:
- lambda可以定义一个匿名函数,而def定义的函数必须有一个名字。
- lambda是一个表达式,而不是一个语句。所以lambda 相比 def 可以用在更多的地方,比如一个列表常量中或函数调用的参数中。
- lambda的主体是一个单个的表达式,而不是一个代码块, 不需要使用return语句返回,但不能像 def 那样使用 for in、while 等语句了。
- lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。
——
lambda 的使用
lambda函数主要用来写一些小体量的一次性函数,避免污染环境,同时也能简化代码。
(可以使用 def 代替, 但是 lambda 仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。)
——
if判断奇偶性
lm = lambda x:"偶数" if x%2==0 else "奇数"
def df(x):
if x%2 == 0:
return "偶数"
else:
return "奇数"
print(lm(5))
print(df(8))
lambda 一行完成,def 通过分支return返回不同结果。
——
无参数表达式
lm = lambda: "testlambda"
def df():
return "testdef"
print(lm())
print(df())
都直接打印 return 的字符串。
——
列表排序
用到sort()
函数。
a=[('9','黑'),('5','白'),('8','绿'),('3','紫'),('6','青'),('4','黄')]
a.sort(key=lambda x:x[0])
b=sorted(a,key=lambda x:x[0],reverse=True)
print(a)
print(b)
——
map方法使用
遍历序列,对序列中每个元素进行操作,最终获得新的序列
def add(num):
return num**2
x = map(add,[1,2,3,4,5])
print(type(x))
print(list(x))
y = map(lambda num:num**2,[1,2,3,4,5])
print(list(y))
map类型不能直接打印,所以转换为list()
列表再打印的。
lambda表达式中,map
函数第一个参数是一个lambda表达式,输入一个参数,返回元素的平方。第二个就是需要作用的对象,此处是一个列表。
——
filter 方法使用
对序列中的元素进行筛选,最终获得符合条件的序列。
x = filter(lambda x:x%2==0, range(20))
print(type(x))
print(list(x))
同样要对filter 类型
进行转换为列表再打印出。
——
reduce 方法使用
对序列内所有元素进行累计操作;Python3中删掉了全局的reduce函数,需要从functools引入
from functools import reduce
list = [1,4,7,3,2,9]
result1 = reduce(lambda x,y:x+y,list)
result2 = reduce(lambda x,y: x*y, list)
print('累加:'.format(result1))
print('累乘:'.format(result2))
reduce
中使用的 lambda表达式需要两个参数,reduce函数共三个参数,第一个是就是lambda表达式,第二个是要累计的序列,第三个是初始值,初始值和序列第一个元素操作,然后结果再与第二个元素操作,以此类推。
以上是关于Python学习第六篇:lambda 表达式的主要内容,如果未能解决你的问题,请参考以下文章
python学习之第六篇:Python中的字典及其所具有的方法