python基础(补充):lambda匿名函数,用了的,都说好!

lambda函数又叫做“匿名函数”。当你完成一件小工作时,直接使用该函数可以让你的工作得心应手。
lambda函数介绍
在Python中,定义函数使用的是def关键字,但是通过lambda关键字来定义的函数,称之为“匿名函数”。
函数的语法如下:
- lambda 参数:表达式
函数用法如下:
- ①先写lambda关键字,②然后依次写匿名函数的参数,多个参数之间用逗号连接,③接着是一个冒号,④冒号后面写的是返回的表达式。
需要注意以下几点:
- lambda函数能接收任意多个参数,但只能返回一个表达式的值;
- lambda函数是一个函数对象,如果直接赋值给一个变量,这个变量就成了一个函数对象;
当待处理的业务符合匿名函数的特点:多个参数和一个返回值,并且该函数只在一个地方使用,不在其他地方复用,建议使用lambda函数。
lambda函数的简单使用
下面我们写了带有一个参数的匿名函数。
print(lambda x: x + 2)
# <function <lambda> at 0x000001CFE5851EA0>
接着,使用type()函数打印该函数的类型,得到的是一个function函数对象。
print(type(lambda x: x + 2))
# <class 'function'>
将匿名函数传递给一个参数,调用匿名函数。
注意:通过这种方式调用匿名函数,变量名+括号。
a = lambda x: x + 2
print(a(2))
# 4
lambda函数的不同形式
lambda函数中可以不传参数,可以传递一个参数,二个参数,或者传递多个参数。
无参数的lambda函数
不管是有参数还是无参数,调用一定是变量名+括号,即这个括号不能省略,否则返回的是一个function函数对象。
In[1]:x1 = lambda: 88
print(x1())
# 88
单参数的lambda函数
单参数指的是匿名函数中只有一个参数,下面来看一个例子。
lambda x: x + 2
print(b(8))
# 10
多参数的lambda函数
多参数指的是匿名函数中有多个参数,下面来看一个例子。
c = lambda x, y: x * y
print(c(2, 5))
# 10
带分支的lambda函数
有时候我们可以根据给定的参数,来判断接下来需要做什么,这就需要匿名函数结合分支表达式使用了。
d = lambda x: x - 1 if x > 5 else x + 1
print(d(9)) # 8
print(d(3)) # 4
lambda函数与Python内置函数配合使用
其实lambda函数还可以与sorted函数,map函数和filter函数,联合使用。这里以sorted函数为例进行举例说明。
对列表里的字典排序
l = [{'a': 1, 'b': 41}, {'a': 1111, 'b': 24}, {'a': 1111, 'b': 32}]
l_s = sorted(l, key=lambda x: x["b"], reverse=True)
print(l_s)
# [{'a': 1, 'b': 41}, {'a': 1111, 'b': 32}, {'a': 1111, 'b': 24}]
对字典进行key排序
m = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
m_s = sorted(m.items(), key=lambda x: x[0])
print(m_s)
# [('a', 25), ('b', 20), ('c', 27), ('d', 22)]
对字典进行values排序
n = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
n_s = sorted(n.items(), key=lambda x: x[1])
print(n_s)
# [('b', 20), ('d', 22), ('a', 25), ('c', 27)]
其它用法
print(list(map(lambda x: x * x, range(1, 11))))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list(filter(lambda x: x % 2 == 0, range(1, 11))))
# [2, 4, 6, 8, 10]

python基础(补充):lambda匿名函数,用了的,都说好!的更多相关文章
- 『Python基础-14』匿名函数 `lambda`
匿名函数和关键字lambda 匿名函数就是没有名称的函数,也就是不再使用def语句定义的函数 在Python中,如果要声匿名函数,则需要使用lambda关键字 使用lambda声明的匿名函数能接收任何 ...
- Python 进阶 之 lambda 匿名函数
lambda 是个匿名函数,通常用于简单判断或者处理,例如判断一个数的奇偶性,过滤字符串,逻辑运算等等. lambda表达式: >>>lambda x:x*x >>> ...
- python学习之lambda匿名函数
1 Python支持运行时使用“lambda”建立匿名函数(anonymous functions that are not bound to a name). python "lambda ...
- python基础一 day16 匿名函数
def add(x,y): return x+y add = lambda x,y:x+yprint(add(1,2)) dic={'k1':10,'k2':100,'k3':30}def func( ...
- Python基础之yield,匿名函数,包与re模块
一.表达式形式的yield 1.另外一种形式的yield def deco(func): def wrapper(*arges, **kwargs): res = func(*arges, **kwa ...
- python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件
上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...
- 《Python》 内置函数补充、匿名函数、递归初识
一.内置函数补充: 1.数据结构相关(24): 列表和元祖(2):list.tuple list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素). tuple:将一个可迭代对象转 ...
- Python 之父为什么嫌弃 lambda 匿名函数?
Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" ...
- Python练习题-1.使用匿名函数对1~1000求和,代码力求简洁。
Python 练习 标签(空格分隔): Python Python练习题 Python知识点 一.使用匿名函数对1~1000求和,代码力求简洁. 答案: In [1]: from functools ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
随机推荐
- html2Canvas to Images
<script> $(function () { var content = document.getElementById("shareImages"); conte ...
- 我眼中的价值币——NGK(下)
跨链交互方案并不是区块链世界中的一个新课题.自比特币诞生揭开智能合约的序幕之后,跨链交互的需求便产生了.但是,经过十年的发展,市场中的跨链解决方案进展缓慢,究之原因有以下几个方面. 首先,区块链的去中 ...
- node初体验(二)
1.静态资源访问,需要设置路由和响应标头 2.url模块.path模块.querystring模块 Url { protocol: null, slashes: null, auth: null, h ...
- python2与python3共存时的pip问题
在树莓派上同时安装有python2和python3,初始的pip是9.01版本,用pip install django只能安装到1.11版本,但是我需要2.0的django. 于是升级pip: pyt ...
- springMvc+AJAX+JSON的增删改查
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 微信小程序一周时间表
<view class="dateView"> <image class="dateLeft" bindtap="prevWeek& ...
- Spring Boot 2.x基础教程:使用MongoDB
前段时间因为团队调整,大部分时间放在了团队上,这系列的更新又耽误了一下.但既然承诺持久更新,那就不会落下,今天开始继续更新这部分的内容! 过了年,重申一下这个系列的目标:目前主要任务就是把Spring ...
- Java垃圾回收机制详解
前言 Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这 ...
- 关于 C++ 中的强制转换 - 基础篇
引言 假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1.此时可以用 A 类型的指针指向 B 类型的对象,并用 A 类型的指针调用 B 类型 ...
- Linux速通07 硬盘分区、格式化及文件系统管理
硬件设备与文件名的对应关系 # 在Linux系统中,每个设备都被当作一个文件来对待 # 各种设备在Linux中的文件名 设备 设备在Linux内的文件名 IDE硬盘 /dev/hd[a-d] SCSI ...