Python 内置高阶函数详解:map、reduce、filter 与 sorted

Chloe
Chloe
发布时间:2026-10-14| 5人浏览过
原创

本文深入解析 Python 内置的高阶函数,包括 map、reduce、filter 和 sorted。详细阐述各函数的语法结构、参数含义及返回值类型,并结合具体代码示例演示如何实现序列映射、累积计算、条件过滤及复杂对象排序,帮助开发者掌握 Python 函数式编程的核心技巧。

1、Python 的内置高阶函数

1.1 map() 函数

map() 函数用于对指定序列执行映射操作,将提供的函数应用于序列中的每个元素。

语法格式如下:

map(function, iterable, ...)

第一个参数 function 是回调函数,系统会依次调用该函数处理序列中的每一个元素。

第二个参数 iterable 表示一个或多个需要处理的序列对象。

该函数返回一个新的列表,其中包含每次调用 function 函数后的返回值。

示例代码:


list1 = [1, 2, 4, 5, 56, 12, 5, 2, 34]


# 生成一个函数
def func(lt):  # 将偶数返回,奇数+1返回
    if lt % 2 == 0:
        return lt
    else:
        return lt + 1


list2 = map(func, list1)  # 千万不能加()
# 使用lambda关键字
list3 = map(lambda i: i if i % 2 == 0 else i + 1, list1)
print(list(list3))  # [2, 2, 4, 6, 56, 12, 6, 2, 34]
print(list(list2))  # [2, 2, 4, 6, 56, 12, 6, 2, 34]

1.2 reduce() 函数

reduce() 函数在 Python2x 版本中是系统内置函数,但在 Python3x 版本中已被移至 functools 模块中。

reduce() 函数用于对参数序列中的元素进行累积计算。

其作用是对数据集合(如列表、元组等)执行以下操作:首先使用 reduce 中的函数 function(需接收两个参数)对集合中的第 1 和第 2 个元素进行操作,将结果与第 3 个元素继续通过 function 函数运算,依此类推,最终得到一个单一结果。

语法格式:

reduce(function, iterable[, initializer])

function 表示执行累积操作的函数,必须接收两个参数。

iterable 表示可迭代的对象序列。

initializer 表示可选的初始参数值。

函数返回最终的计算结果。

示例代码:


from functools import reduce

list1 = [1, 2, 3, 4, 5, 6, 7]
value = reduce(lambda x, y: x + y, list1)
print(value)  # 28 = 1+2+3+4+5+6+7

计算结果会存储到变量 x 中,并在每次迭代中累计。initializer 用于设置 x 的初始值。

1.3 filter() 函数

filter() 函数用于过滤序列,剔除不符合条件的元素,并返回一个迭代器对象;若需转换为列表,可调用 list() 进行转换。

该函数接收两个参数:第一个为判断函数,第二个为序列。序列中的每个元素作为参数传递给函数进行判断,函数返回 True 或 False,最后将返回 True 的元素放入新列表中。

语法结构:

filter(function, iterable)

function 表示用于判断的函数。

iterable 表示可迭代的对象。

返回一个可迭代对象。

1.4 sorted() 函数

sorted() 函数对所有可迭代对象执行排序操作,并返回一个新的列表。

语法结构:

sorted(iterable, cmp=None, key=None, reverse=False)

iterable 表示需要排序的可迭代对象。

cmp 表示比较函数,该函数接收两个参数(值来自可迭代对象),必须遵循以下规则:大于返回 1,小于返回 -1,等于返回 0。

key 表示主要用来进行比较的元素,仅接收一个参数,具体取自可迭代对象中的元素,用于指定排序依据。

reverse 表示排序规则,reverse = True 表示降序排列, reverse = False 表示升序排列(默认值)。

返回重新排序后的列表。

示例代码:


students = [
    {'name': 'tom', 'age': 20},
    {'name': 'lucy', 'age': 15},
    {'name': 'lily', 'age': 13},
    {'name': 'mark', 'age': 21},
    {'name': 'jack', 'age': 13},
    {'name': 'steven', 'age': 18},
]

 
# 找出所有年龄大于18岁学生
result = filter(lambda x: x['age'] > 18, students)
print(list(result))  # [{'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}]

# 按照年龄从小到大排序
students = sorted(students, key=lambda x: x['age'], reverse=True)  # 利用key

print(students)
'''
[{'name': 'mark', 'age': 21}, {'name': 'tom', 'age': 20}, 
{'name': 'steven', 'age': 18}, {'name': 'lucy', 'age': 15}, 
{'name': 'lily', 'age': 13}, {'name': 'jack', 'age': 13}]
'''

到此这篇关于 Python 内置高阶函数详细的文章就介绍到这了,更多相关 Python 内置高阶函数内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。