当前位置: 首页 > news >正文

Python学习-----lambda式匿名函数

 

目录

前言:

1.什么是lambda函数

 2.使用示例

(1)示例1:与def对比

(2)示例2:与三目运算符

(3)示例3:lambda作为参数传入其他函数

(4) 示例4:作为其他函数的值


前言:

        前面我们学习了def函数的相关用法,而今天我们来讲一个Python中很常见的一个函数---lambda函数,这个函数是怎么去使用呢?以及跟def对比起来又有那些不同呢?一起来看看吧!

 

1.什么是lambda函数

        lambda 本身是一个关键字,跟def 是一样的,同样也是可以去定义一个函数,用lambda关键字写法更加简洁明了,但是也有其不足,不能去实现定义一个复杂的函数过程,但是在很多情况下我们会去使用这个函数来实现一些简单的函数功能。

表达式lambda argument_list:expression 

说明:

lambda:是Python中预留的关键字

argument_list:是函数的参数,跟def 函数一样,参与后面的功能

expression:是函数的相关功能,其中参数是在argument_list 中定义好的,而且只有一行

 lambda的特性:

1.lambda定义的函数是匿名的,也就是说这个函数名字是没有的,其本身就是一个函数功能,但没有名字

2.lambda定义的函数是有输入和输出的,这里可以去传入数据到lambda定义的函数中,然后后面的expression中去实现先关功能,然后返回新的数据

3.lambda定义的函数功能简单,这里很容易就可以看出了,因为lambda定义的函数expression只有一行,所以一般只能实现一些简单的功能,这跟def关键字定义的函数是不一样的

 2.使用示例

(1)示例1:与def对比

#def定义函数
def fun(n):return n**2
num=int(input('enter:'))
print(fun(num))#lambda定义函数
use=lambda x:x**2
print(use(num))

        上面的lambda定义的函数功能跟def定义的是一样的,传入一个值x,然后返回x**2,但是lambda函数是有闭包的特性的,这里我可以定义一个use来获取lambda函数的功能就可以看出。

(2)示例2:与三目运算符

judge=lambda x:True if x % 2==0 else False
num=int(input('enter:'))
print(judge(num))

(3)示例3:lambda作为参数传入其他函数

import random as r
li=[x for x in range(1,20) if x%2==0]
r.shuffle(li)
print('排序前:',li)
li.sort(key=lambda x:-x**2+6*x+8)
print('排序后:',li)
#输出结果:排序前: [12, 4, 2, 16, 18, 10, 14, 8, 6]
#         排序后: [18, 16, 14, 12, 10, 8, 6, 4, 2]

这里定义的lambda函数是作为一个参数传入sort 函数中的key,让列表中的值转换为-x**2+6*x+8之后,再按照由小到大对列表中的值进行排序

import random as r
import math
li=[int(x) for x in range(1,20) if x%2!=0]
r.shuffle(li)
print(li)
new_li=map(lambda x:round(math.sin(x),2),li)#通过Python中内置round函数实现保留两位小数
print(list(new_li))
#输出结果:[15, 9, 19, 3, 11, 13, 5, 17, 7, 1]
#         [-0.96, 0.14, 0.65, 0.42, 0.15, -0.96, 0.84, 0.41, -1.0, 0.66]

 这里是将lambda定义的函数作为map()函数的参数,然后把列表中的数据依次作为参数传入lambda定义的函数,实现相关功能,最后返回一个新的map类型,我们进行list转换就可以以列表的形式输出这个返回值

(4) 示例4:作为其他函数的值

import time as t
t.sleep=lambda x:None
t.sleep(3)
print('hello!')

        在正常情况下,控制板会等待3秒然后才输出hello!,但是我通过了lambda函数赋值给sleep函数,所以此时的t.slep函数分功能就是lambda定义的函数功能,也就是说sleep已经失去了停机的功能了,所以就不会延迟3秒再输出结果。

好了,这一期就到这里了,谢谢各位~~

分享一张壁纸

 

http://www.lryc.cn/news/17596.html

相关文章:

  • 华为OD机试真题Python实现【求解连续数列】真题+解题思路+代码(20222023)
  • 每日学术速递2.22
  • postgresql 数据库 主从切换 测试
  • 干旱预测方法总结及基于人工神经网络的干旱预测案例分析(MATLAB全代码)
  • 一篇文章弄清楚啥是数组和集合
  • 计算机网络(五):三次握手和四次挥手,TCP,UDP,TIME-WAIT,CLOSE-WAIT,拥塞避免,
  • 【数据结构】二叉树(C语言实现)
  • 高级信息系统项目管理(高项 软考)原创论文——成本管理(2)
  • 代码签名即将迎来一波新关注
  • 黑盒渗透盲打lampiao
  • 笔记:VLAN及交换机处理详细教程(Tagged, UnTagged and Native VLANS Tutorial)
  • 在字节跳动,造赛博古籍
  • Android 12.0设置默认Launcher安装一款Launcher默认Launcher无效的解决方案
  • 数据结构第16周 :( 希尔排序+ 堆排序 + 快速排序 )
  • 【C++】类和对象
  • Java缓存面试题——Redis应用
  • KMP算法详细理解
  • RabbitMQ单节点安装
  • tomcat 服务的目录结构和tomcat的运行模式
  • vector迭代器失效问题
  • 2023年排名前茅的十大饭店装修设计!
  • MFCCA多通道多说话人语音识别模型上线魔搭(ModelScope)
  • 刷题记录:牛客NC25078[USACO 2007 Ope S]City Horizon
  • 【Java|golang】 1238. 循环码排列---格雷编码
  • Python自动化测试框架封装和调用
  • 线程的执行
  • 【视频】海康摄像头、NVR网络协议简介
  • 【Spring的事务传播行为有哪些呢?Spring事务的隔离级别?讲下嵌套事务?】
  • 其实一点不难学会这三步一定让你学会制作一个『3D建模』大屏
  • 【C++】C++的内存模型之四大分区