python中的filter、map、reduce函数

本文详细介绍了Python中的三个高阶函数:filter(), map() 和 reduce() 的用法及实例。filter()用于过滤序列,返回符合条件的新列表;map()用于映射序列,返回经过函数处理的新列表;reduce()用于累积操作,但需引用 functools 模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

filter() 函数

用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表

filter() 方法的语法:

filter(function, iterable)
function – 判断函数。
iterable – 可迭代对象。
输出前需要使用list()进行显示转换

map()函数

会根据提供的函数对指定序列做映射,返回包含每次 function 函数返回值的新列表

map() 函数语法:

map(function, iterable, …)
function – 函数
iterable – 一个或多个序列
输出前需要使用list()进行显示转换

reduce()函数

被放到了functools包中,使用需要引用
from fuctiontools import reduce
不建议使用
https://blog.youkuaiyun.com/nigelyq/article/details/79283014

>>> print(list(filter(lambda x:x>5,[12,3,13,1,2,35])))  # 输出比5大的数字
[12, 13, 35]
>>> print(list(map(lambda x:x>5,[12,3,13,1,2,35])))  # 判断元素是否比5大
[True, False, True, False, False, True]
def is_odd(n):  # 是否为奇数
    return n % 2 == 1

new_f = filter(is_odd, [1, 2, 3, 4, 5])
print(new_f)  # 返回一个对象
print(list(new_f))

new_m = map(is_odd, [1, 2, 3, 4, 5])
print(new_m)  # 返回一个对象
print(list(new_m))
# 返回结果为:
<filter object at 0x00000227F7FE3278>
[1, 3, 5]
<map object at 0x00000227F8210080>
[True, False, True, False, True]
### Python 中 `map`、`filter` 和 `reduce` 函数的使用 #### map 函数 `map()` 是一个高阶函数,用于将指定的操作应用到序列中的每一个元素,并返回一个新的迭代器。该操作由传入的第一个参数定义。 ```python def square(x): return x ** 2 numbers = [1, 2, 3, 4] squared_numbers = list(map(square, numbers)) print(squared_numbers) # 输出: [1, 4, 9, 16] ``` 也可以使用 lambda 表达式简化上述过程[^2]: ```python numbers = [1, 2, 3, 4] squared_numbers = list(map(lambda x: x ** 2, numbers)) print(squared_numbers) # 输出: [1, 4, 9, 16] ``` #### filter 函数 `filter()` 同样是一个高阶函数,它会根据给定条件筛选出符合条件的元素并组成新的列表。此功能通过传递布尔值来实现——如果为真,则保留该项;反之则丢弃。 ```python def is_even(n): return n % 2 == 0 numbers = range(10) even_numbers = list(filter(is_even, numbers)) print(even_numbers) # 输出: [0, 2, 4, 6, 8] ``` 同样可以利用 lambda 来简化代码: ```python numbers = range(10) even_numbers = list(filter(lambda n: n % 2 == 0, numbers)) print(even_numbers) # 输出: [0, 2, 4, 6, 8] ``` #### reduce 函数 不同于前两者位于内置命名空间内,默认情况下需从 `functools` 导入 `reduce()` 。这个工具能够接收两个参数作为输入的数据集以及一个累积运算符(通常是二元函数)。最终结果是从左至右逐步计算得到的一个单独数值。 ```python import functools product_of_elements = functools.reduce(lambda x, y: x * y, [1, 2, 3, 4]) print(product_of_elements) # 输出: 24 ``` 当提供初始值时,它可以被放置于数据流之前参与首次运算: ```python import functools initial_value_product = functools.reduce(lambda x, y: x * y, [1, 3, 5], 2) print(initial_value_product) # 输出: 30 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值