Python_lambda表达式_filter()过滤器_map映射

本文介绍了Python中的lambda表达式、filter过滤器和map映射的使用。lambda表达式用于创建匿名函数,简化代码,如`lambda x: 2*x+1`。filter函数结合函数对可迭代对象进行筛选,例如筛选出奇数`list(filter(lambda x: x%2, range(10)))`。map函数则将函数应用于序列的每个元素,如`list(map(lambda x: x*2, range(10)))`,返回结果列表。
部署运行你感兴趣的模型镜像

1.lambda表达式

lambda表达式使用场景:

  • Python在写执行脚本时可以使用lambda表达式省去函数定义的过程,提高代码简洁性。
  • 对于比较抽象的函数,且执行函数只用很少的步骤。可以使用lambda表达式。
  • 简化代码的可读性,不需要跳转到函数定义位置。

结构:lambda 参数:返回值

#-*-coding:GBK -*- 
# -*- coding: UTF-8 -*-

#一个参数的lambdab表达式
def Line(x):
    return 2*x+1
print(Line(3))

g= lambda x:2*x+1
print(g(3))

#两个参数的lambda表达式
def Add(x,y):
    return x+y
print(Add(1,3))

g=lambda x,y:x+y
print(g(1,3))

在这里插入图片描述

2.filter过滤器

在这里插入图片描述
filter的参数可以是函数,可以是None对象,第二参数是可迭代数据。
如果第一个参数是函数:
将第二的可迭代数据的每一个元素作为函数的参数进行计算,将返回true的值筛选出来以列表的形式返回。
如果第一个参数为None:
将第二个参数里面的true值筛选出来
eg:

#-*-coding:GBK -*- 
# -*- coding: UTF-8 -*-
print(list(filter(None,[1,0,False,True])))

#筛选奇数过滤器
def Odd(x):
    return x%2
Arr=range(10)
print(list(filter(Odd,Arr)))

#lambda表达式表示
print(list(filter(lambda x:x%2,range(10))))

在这里插入图片描述

3.map映射

在这里插入图片描述
将序列的每一个元素作为函数的参数进行运算,直到可迭代序列结束,以序列的形式返回所有计算结果。

#-*-coding:GBK -*- 
# -*- coding: UTF-8 -*-

print(list(map(lambda x:x*2,range(10))))

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们正在讨论Python中的lambda表达式。根据引用内容,lambda表达式是匿名函数,用于简化代码,特别是在需要小函数作为参数传递时。以下将详细解释其使用方法、适用场景及注意事项。 引用[1]指出lambda表达式可以使代码更简洁易读,适用于简单表达式和函数,但复杂函数应避免使用。 引用[3]说明lambda用于替代简单函数,提高可读性,并给出元组列表处理的例子。 引用[4]提到lambda相当于函数体为单个return语句的普通函数的匿名函数,并强调没有return关键字。 引用[5]详细说明了lambda的语法:冒号前是参数,冒号后是表达式,返回表达式计算结果。 下面按结构组织回答: 1. 基本语法:lambda 参数: 表达式 2. 使用场景:数学计算、列表操作、高阶函数参数(如mapfilter、sorted) 3. 注意事项:只适用于简单逻辑,复杂函数应使用def 同时,我们会举几个典型例子,并最后生成相关问题。 </think> ### Pythonlambda表达式详解与应用指南 Lambda表达式Python中的**匿名函数**,专为简化简单函数逻辑设计,核心语法为:`lambda 参数: 表达式`。其特点是无函数名、单表达式、自动返回结果值。下面通过具体场景解析使用方法: --- #### 一、基础语法与特性 1. **语法结构** ```python # 基本形式:冒号前为参数,冒号为表达式 add = lambda x, y: x + y print(add(3, 5)) # 输出:8 ``` 2. **核心特性** - **匿名性**:无需`def`定义函数名 - **单一表达式**:函数体仅支持单行表达式(不能包含`return`或复杂语句) - **即用即抛**:适用于临时性简单逻辑 --- #### 二、四大典型应用场景 1. **数学计算**(引用[3][^3]) ```python # 平方计算 square = lambda x: x ** 2 print(square(4)) # 输出:16 # 直接调用(引用[5][^5]) print((lambda x, y: x*y)(3, 4)) # 输出:12 ``` 2. **列表操作** - **映射转换**(结合`map`) ```python nums = [1, 2, 3] squared = list(map(lambda x: x**2, nums)) # 输出:[1, 4, 9] ``` - **条件过滤**(结合`filter`)(引用[4][^4]) ```python numbers = [15, 20, 8, 30] filtered = list(filter(lambda x: x > 10, numbers)) # 输出:[15, 20, 30] ``` 3. **自定义排序**(结合`sorted`) ```python students = [("Alice", 88), ("Bob", 72), ("Cathy", 95)] # 按成绩降序排序 sorted_students = sorted(students, key=lambda s: s[1], reverse=True) # 输出:[('Cathy', 95), ('Alice', 88), ('Bob', 72)] ``` 4. **函数返回值** ```python def make_multiplier(n): return lambda x: x * n # 返回一个乘法器函数 triple = make_multiplier(3) print(triple(7)) # 输出:21 ``` --- #### 三、使用限制与注意事项 1. **适用边界** - ✅ 简单逻辑(如数学运算、条件判断) - ❌ 复杂函数(需多行语句或循环时应用`def`) 2. **常见误区** ```python # 错误:试图在lambda中写多行语句 func = lambda x: print(x) # SyntaxError: 表达式必须是单行 # 正确替代方案:使用def定义普通函数 def print_value(x): print(x) return x ``` 3. **命名规范** - 避免将lambda赋值给变量(失去匿名意义),应直接作为参数传递 - 优先用于高阶函数(`map`/`filter`/`sorted`)的参数 --- #### 四、与普通函数对比 | 特性 | Lambda表达式 | `def`定义函数 | |--------------|-----------------------|-----------------------| | 函数名 | 匿名 | 需显式命名 | | 函数体 | 单行表达式 | 支持多行复杂逻辑 | | 返回值 | 自动返回表达式结果 | 需`return`语句 | | 适用场景 | 简单临时操作 | 复杂可复用逻辑 | > **关键原则**:当函数逻辑能用**一行表达式清晰描述**时使用lambda(如`lambda x: x%2==0`),否则用`def`保证可读性(引用[1][^1])。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BaiRong-NUC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值