博客
关于我
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/

你可能感兴趣的文章
LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)
查看>>
localhost:5000在MacOS V12(蒙特利)中不可用
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
Moment.js常见用法总结
查看>>