Python中特殊函数详解:filter、map/reduce、装饰器和lambda
50 浏览量
更新于2024-08-28
收藏 169KB PDF 举报
Python 中特殊函数集锦
1. 过滤函数 filter
定义:filter 函数的功能相当于过滤器。调用一个布尔函数 bool_func 来迭代遍历每个列表中的元素;返回一个使 bool_func 返回值为 true 的元素的序列。
filter 函数的使用场景:当我们需要从一个列表中筛选出符合某些条件的元素时,可以使用 filter 函数。例如,我们可以使用 filter 函数来筛选出一个列表中的所有偶数元素。
代码示例:
```
a = [0, 1, 2, 3, 4, 5, 6, 7]
b = filter(None, a)
print(b) # 输出结果:[1, 2, 3, 4, 5, 6, 7]
```
2. 映射和归并函数 map/reduce
2.1 map 函数
定义:map 函数的格式:map(func, seq1[, seq2…])
map 函数的作用是将 func 作用于列表中的每一个元素,并用一个列表给出返回值。如果 func 为 None,作用等同于一个 zip() 函数。
map 函数的使用场景:当我们需要将一个列表中的每个元素进行某种操作时,可以使用 map 函数。例如,我们可以使用 map 函数来将一个列表中的所有元素转换为大写字母。
代码示例:
```
print(map(lambda x: x.upper(), ['hello', 'world'])) # 输出结果:['HELLO', 'WORLD']
```
2.2 reduce 函数
定义:reduce 函数的格式:reduce(func, seq[, initial])
reduce 函数的作用是将 func 作用于列表中的每个元素,并将结果累加起来。
reduce 函数的使用场景:当我们需要将一个列表中的所有元素进行某种操作,并将结果累加起来时,可以使用 reduce 函数。例如,我们可以使用 reduce 函数来计算一个列表中的所有元素的和。
代码示例:
```
from functools import reduce
print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])) # 输出结果:15
```
3. 匿名函数 lambda
定义:lambda 函数是一个匿名函数,它可以在需要时临时创建一个函数。
lambda 函数的使用场景:当我们需要临时创建一个函数时,可以使用 lambda 函数。例如,我们可以使用 lambda 函数来将一个列表中的所有元素转换为大写字母。
代码示例:
```
print(map(lambda x: x.upper(), ['hello', 'world'])) # 输出结果:['HELLO', 'WORLD']
```
4. 装饰器 @
定义:装饰器 @ 是 Python 中的一种语法糖,它可以用来装饰函数。
装饰器 @ 的使用场景:当我们需要在函数执行之前或之后执行某些操作时,可以使用装饰器 @。例如,我们可以使用装饰器 @ 来记录函数的执行时间。
代码示例:
```
def timer(func):
def wrapper():
start_time = time.time()
func()
end_time = time.time()
print(f"函数执行时间:{end_time - start_time} 秒")
return wrapper
@timer
def test_func():
time.sleep(2)
test_func() # 输出结果:函数执行时间:2.002143 秒
```
Python 中的特殊函数集锦包括过滤函数 filter、映射和归并函数 map/reduce、匿名函数 lambda 和装饰器 @。这些函数可以帮助我们更方便地处理列表和函数,并提高代码的可读性和效率。
2011-01-24 上传
2021-01-20 上传
2020-09-20 上传
2020-09-16 上传
2020-09-21 上传
点击了解资源详情
点击了解资源详情
2024-07-03 上传
2023-05-25 上传
weixin_38711529
- 粉丝: 4
- 资源: 901
最新资源
- 编程之道全本 by Geoffrey James
- JBoss4.0 JBoss4.0 JBoss4.0 JBoss4.0 JBoss4.0
- DWR中文文档,DWR中文文档
- 汉诺塔问题 仅限11个盘子 效率较高
- 生化免疫分析仪——模数转换模块设计
- ajax基础教程.PDF
- symbian S60编程书
- 智能控制\BP神经网络的Matlab实现
- matlabziliao
- PowerBuilder8.0中文参考手册.pdf
- NNVVIIDDIIAA 图形处理器编程指南(中文)
- UMl课件!!!!!!!!!
- 电工学试卷及答案(电工学试卷2007机械学院A卷答案)
- 高质量C++编程指南.pdf
- 大公司的Java面试题集.doc
- 基于UBUNTU平台下ARM开发环境的建立