惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
B
Blog RSS Feed
小众软件
小众软件
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
WordPress大学
WordPress大学
月光博客
月光博客
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
量子位
V
Visual Studio Blog
罗磊的独立博客
Last Week in AI
Last Week in AI
The Cloudflare Blog
H
Help Net Security
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队

博客园 - tsembrace

Pandas数据分析教程,由浅入深讲解(五)Pandas IO操作 Pandas数据分析教程,由浅入深讲解(四) Pandas数据分析教程,由浅入深讲解(三) Pandas数据分析教程,由浅入深讲解(二) Pandas数据分析教程,由浅入深讲解(一) B站黑马Python+AI零基础入门(二)AI应用-实战 B站黑马Python+AI零基础入门(一)AI应用-基础 B站清华128小时Python高级教程一(C3深入类和对象) B站清华128小时Python高级教程一(C1、C2) B站python入门学习---第二阶段第二章数据库、SQL和MySQL B站python入门学习---第二阶段第一章类和对象 B站python入门学习---第一阶段第十章 数据可视化 B站python入门学习---第一阶段第八~九章 文件操作、异常、模块与包 B站python入门学习---第一阶段前七章回顾复习(二) B站python入门学习---第一阶段前七章回顾复习(一) Python入门学习(十)第十四章其他 Python入门学习(九)Python的高级语法与用法(四)装饰器 Python入门学习(九)Python的高级语法与用法(二)闭包 Python入门学习(九)Python的高级语法与用法(一)枚举 Python入门学习(八)JSON、反序列化、序列化 Python入门学习(七)高级部分:正则表达式(二) Python入门学习(七)高级部分:正则表达式 Python入门学习(六)高级部分:面向对象 Python入门学习(五)函数 Python入门学习(四)流程控制 包与模块
Python入门学习(九)Python的高级语法与用法(三)函数式编程
tsembrace · 2025-08-14 · via 博客园 - tsembrace

一、lambda表达式

#lambda表达式
#冒号前面为参数,后面为返回值,必须为一个表达式,不能是代码块

#调用,可以赋值给一个变量
f = lambda x, y: x+y
print(f(1,2))

二、三元表达式

#三元表达式
#如果x>y,则取x,反之取y
x = 2
y = 1
r = x if x > y else y
print(r)
#三元表达式常常用于lambda表达式
f = lambda x, y: x if x > y else y
print(f(1,12))

 三、map

#map非函数,是一个类

list_x = [1,2,3,4,5,6,7,8]
#求列表各元素的对应值
def square(x):
    return x * x

#用for循环实现
list_y = []
for x in list_x:
    list_y.append(x*x)
print(list_y)

#用map实现
#第一个参数为函数,第二个参数为序列
#把序列中每个元素按函数规则一一映射
r = map(square, list_x)
print(r)   #输出一个map对象
print(list(r))  #转换为列表输出

很多情况下lambda表达式和map结合使用

#用lambda和map结合的方式实现
r = map(lambda x: x * x, list_x)
print(list(r))
#map也可以传入多个列表、元组,依次对应lambda中参数
list_x = [1, 2, 3, 4, 5, 6]
list_y = (1, 3, 5, 7, 9, 11)
r = map(lambda x, y: x * 2 + y, list_x, list_y)
print(list(r))

四、reduce

from functools import reduce

#reduce是一个函数,其内的lambda函数必须是两个参数
#reduce连续调用函数,第一次执行函数会先取序列前两个元素运算后作为第二次执行函数的x参数,y参数顺序取序列中第三个元素,按此类推
#即((((1+2)+3)+4)+5)+6
list_x = [1, 2, 3, 4, 5, 6]
r = reduce(lambda x,y:x+y, list_x)
print(r)
#一个旅行者,一开始位于(0,0)位置,经过如下x中元素的移动
#求最终位置坐标
x = [(1,3), (2, -2), (-2, 3)]
final_pos = reduce(lambda x, y :(x[0]+y[0], x[1]+y[1]), x)
print(final_pos)

 五、filter

#filter通过设置真伪判断可以过滤掉相关元素

list_x = [1, 0, 1, 0, 0, 1]
#剔除掉值为0的元素
#依据filter第一个参数的真假来判断当前元素是否保留
r = filter(lambda x: True if x==1 else False, list_x)
print(r)
print(list(r))
#本例中也可以简化直接如下
r = filter(lambda x:x,list_x)
print(list(r))

list_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
#剔除偶数
r = filter(lambda x:1 if x%2==1 else 0, list_y)
print(list(r))

list_z = ['a', 'B', "c", "D", "E", "f"]
#剔除小写字母
r = filter(lambda x:True if x < 'a' else False,list_z)
print(list(r))