20-高级特性之内建方法(1)
发布日期:2025-06-07 21:17:19
浏览次数:3
分类:精选文章
本文共 1744 字,大约阅读时间需要 5 分钟。
Python中的map、reduce、filter函数,以及sorted函数,是处理序列的高阶函数,能够简化代码并提高效率。以下是对这些函数的详细介绍和使用方法:
1. map函数
作用:根据提供的函数对指定序列中的每个元素进行映射,返回一个新的迭代器。
- 基本用法:
m = map(lambda x: x*x, [1, 2, 3])print(list(m)) # 输出: [1, 4, 9]
- 多个序列:
m = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])print(list(m)) # 输出: [5, 7, 9]
- 注意事项:map函数返回的是迭代器对象,需要用list()转换为列表。
2. reduce函数
作用:对序列中的元素进行累积操作,返回一个单一结果。
- 基本用法:
from functools import reducer = reduce(lambda x, y: x+y, [1, 2, 3, 4]) # 输出: 10r = reduce(lambda x, y: x+y, [1, 2, 3, 4], 5) # 初始值5,输出: 15
- 注意事项:reduce函数在Python3中位于functools模块中,需导入使用。
3. filter函数
作用:根据函数返回值对序列进行过滤,返回一个新的迭代器。
- 基本用法:
f = filter(lambda x: x%2, [1, 2, 3, 4])print(list(f)) # 输出: [1, 3]f = filter(None, "hello")print(list(f)) # 输出: ['e', 'l', 'l', 'o']
- 注意事项:当传入None时,检查元素是否为非空值。
4. sorted函数
作用:对可迭代对象进行排序,可指定排序键和方向。
- 基本用法:
L1 = [36, 5, -12, 9, -21]sorted_L1 = sorted(L1) # 输出: [-21, -12, 5, 9, 36]sorted_L1 = sorted(L1, key=abs) # 输出: [-21, -12, 5, 9, 36]sorted_L1 = sorted(L1, key=abs, reverse=True) # 输出: [36, 9, 5, -12, -21]
- 字符串排序:
L2 = ['bob', 'about', 'Zoo', 'Credit']sorted_L2 = sorted(L2) # 输出: ['Credit', 'about', 'bob', 'Zoo'](按ASCI码)sorted_L2 = sorted(L2, key=str.lower) # 输出: ['about', 'bob', 'Credit', 'Zoo']
- 自定义排序:
L3 = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88), ('haoZhang', 22)]def fn(t): return t[0].lower()sorted_L3 = sorted(L3, key=fn) # 输出: [('adam', 92), ('bart', 66), ('bob', 75), ('haozhang', 22), ('lisa', 88)]
5. 匿名函数(lambda)
作用:定义一次性使用的函数,简化代码。
- 基本用法:
f = lambda x: x*xprint(f(2), f(4)) # 输出: 4 16
- 复杂逻辑:
def fn(x, y): return (lambda x, y: x + y)f2 = fn(3, 4)print(f2(3, 4)) # 输出: 7
- filter的使用:
L = list(filter(lambda x: x%2 == 1, range(1, 20)))print(L) # 输出: [1, 3, 5, ..., 19]
通过合理使用这些高阶函数,可以有效地处理数据序列,提升代码的简洁性和效率。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2026年06月23日 14时30分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型
2023-03-01
php数组函数分析--array_column
2023-03-01
php数组去重复数据的小例子
2023-03-01
php数组实现:哈希 +双向链表
2023-03-01
PHP数组排序函数array_multisort()函数详解(二)
2023-03-01
php数组的几个函数和超全局变量
2023-03-01
PHP文件上传详解
2023-03-01
PHP文件锁
2023-03-01
php文本框输入制定文本,php – 当用户没有向文本框输入任何内容时...
2023-03-01
PHP时间戳和日期相互转换操作总结
2023-03-01
php时间戳知识点,php 时间戳函数总结与示例
2023-03-01
php更新数据库失败,php – 无法更新MySQL数据库
2023-03-01
php机器人聊天对话框,基于AIML的PHP聊天机器人
2023-03-01
PHP查找数组中最大值与最小值
2023-03-01
php查最大值,在PHP数组中查找最大值
2023-03-01
php根据年月日计算年龄
2023-03-01
RabbitMQ - 单机部署(超详细)
2023-03-01
php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
2023-03-01
php模拟发送GET和POST请求
2023-03-01