博客
关于我
20-高级特性之内建方法(1)
阅读量:797 次
发布时间:2023-04-04

本文共 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]

通过合理使用这些高阶函数,可以有效地处理数据序列,提升代码的简洁性和效率。

转载地址:http://ssrfk.baihongyu.com/

你可能感兴趣的文章
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>