L11-Python中的高阶函数的使用

2023-05-16

Python中的函数是一个对象,既可以作为输入参数,也可以作为返回结果。在这里聊聊几个常用的高阶函数,来看看函数是如何被作为输入参数/返回结果来使用的。

1、map() 映射函数

语法:map(function,Iterator)
function指函数名称,Iterator指一个可迭代对象如列表。

用途:遍历Iterator中的每一个元素,执行函数function

# 直接使用lambda 临时函数
items=[1, 3, 9, 10]
list(map(lambda x:x+1, items))
# 先定义函数,再传入函数名
def plus1(x):
    x += 1
    return x
# 注:这里是 plus1 而不是 plus1() 
list(map(plus1, items))

2、reduce() 规约函数

用途:reduce() 函数会对参数序列中元素进行累积。

执行过程:
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:
用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果

def sumTotal(x,y):
    return x + y

from functools import reduce
# 
print(reduce(sumTotal,items))
# 直接传入lambda函数
print(reduce(lambda x,y:x+y,items))

3、filter() 过滤函数

用途: 用来过滤序列

调用方式:
filter(函数名,对象名)把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

返回值:
是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list

def is_odd(n):
    return n % 2 == 1

# 查看返回类型,是一个filter对象
type(filter(is_odd, [1, 3, 4, 9]))
# <class 'filter'>

# 用list()输出
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

#%% 去掉序列中的空字符串
def not_empty(s):
    return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))

4、sorted() 排序函数

既可以使用默认的升序,也可以通过传入函数来实现自定义排序

# 默认按升序
print(sorted([36, 5, -12, 9, -21]))
# [-21, -12, 5, 9, 36]

# 传入函数,按绝对值升序
print(sorted([36, 5, -12, 9, -21], key=abs))
# [5, 9, -12, -21, 36]

# 忽略大小写
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower))

#%% 反向排序
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

L11-Python中的高阶函数的使用 的相关文章

随机推荐

  • 异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET使用说明

    select函数 xff1a 系统提供select函数来实现多路复用输入 输出模型 原型 xff1a include lt sys time h gt include lt unistd h gt select函数 xff1a 系统提供se
  • 7-53 两个有序序列的中位数 (25 分)

    已知有两个等长的非降序序列S1 S2 设计函数求S1与S2并集的中位数 有序序列A 0 A 1 AN 1的中位数A N 1 2的值 即第 N 43 1 2 个数 xff08 A 0为第1个数 xff09 输入格式 输入分三行 第一行给出序列
  • PROC系列之---/proc/stat/

    包含了所有CPU活动的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 work 64 builder cat proc stat cpu 432661 13295 86656 422145968 171474 233 5
  • PROC系列之---/proc/pid/stat

    proc stat 包含了所有CPU活跃的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 root 64 localhost cat proc 6873 stat 6873 a out R 6723 6873 6723
  • PROC系列之---/proc/pid/statm

    proc statm 包含了所有CPU活跃的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 root 64 localhost cat proc self statm 654 57 44 0 0 334 0 输出解释 C
  • Linux下使用socket传输文件的C语言简单实现

    简单的C语言实现 xff0c 客户端通过TCP协议向服务器端请求传输的文件 xff0c 服务器端收到请求后向客户端发送文件 服务器程序和客户端程序应当分别运行在两台计算机上 在运行服务器端的计算机终端执行 xff1a file server
  • 设置linux进程优先级和CPU亲和性(转载)

    进程cpu资源分配就是指进程的优先权 xff08 priority xff09 优先权高的进程有优先执行权利 配置进程优先权对多任务环境的linux很有用 xff0c 可以改善系统性能 还可以把进程运行到指定的CPU上 xff0c 这样一来
  • 20130718:Linux内核编译

    最近在学习 操作系统概念 一书 xff0c 有些实验需要在系统内核中增加一些新的系统调用 xff0c 由此便产生了修改内核源码并重新编译生成新内核的需求 我的思路是 首先搞定内核编译的流程 xff0c 确保有个可用的实验环境 xff0c 在
  • Linux Bash Shell 学习笔记

    1 bash脚本的参数处理 BASH的参数可以用 加数字编号来访问 xff0c 其中 xff1a 代表脚本的参数个数 1代表脚本的第1个参数 2代表脚本的第2个参数 以此类推 xff0c n代表脚本的第n个参数 xff0c 但是 xff0c
  • L1-python中的特殊方法__str__

    1 使用场景 在Python的类的定义中 xff0c init 方法用来初始化实例属性 当创建类对象并打印输出时 xff0c 默认输出结果会是一串地址符 xff0c 如 xff1a lt main Student object at 0x0
  • L3-python语言中的几种特征操作

    汇总了目前碰到的几个Python有别于其它程序语言特征 xff0c 体现了Python语言自有的简洁与优雅 xff0c 可参考如下使用与注意事项 列表推导式 一行代码直接对列表元素进行翻倍操作 xff0c 比for的遍历 xff0c 简洁
  • 7-13 统计工龄 (20 分)

    给定公司N名员工的工龄 xff0c 要求按工龄增序输出每个工龄段有多少员工 输入格式 输入首先给出正整数N xff08 10 5 xff09 xff0c 即员工总人数 xff1b 随后给出N个整数 xff0c 即每个员工的工龄 xff0c
  • L4-深度分析Python数据库(SQLServer)访问中的连接

    1 环境准备 首先就是要安装包 xff0c 直接使用pip命令安装即可 pip install pymssql 2 Python pymssql库的数据库访问分析 参考下图 xff0c 描述了数据库连接在单次访问中的创建与关闭 值得注意的是
  • L5-利用Python生成器巧解算法小题

    介绍两个利用Python生成器替代传统的循环遍历操作来解决问题的例子 经过思考与实践 xff0c 充分利用这种自有特征 xff0c 理解实现的细节 xff0c 感受这种编程方式的优雅 1 字符替换 将 aeiou 进行替换 xff0c 规则
  • L6-Numpy中的随机函数

    文章目录 1 rand 2 randn 3 randint 4 random 5 choice 6 随机种子seed 本文汇总了Numpy中常见的取随机数的函数 xff0c 介绍了基本用法 1 rand 指定的输出的二维数组的型 xff0c
  • L7-Python字符串格式化小结

    文章目录 一 百分号 1 直接使用2 表达式赋值3 绑定变量名4 格式符汇总说明5 更精细化的控制 二 format控制基本语法1 绑定变量名2 绑定对象属性3 通过下标取元素来赋值4 填充与对齐5 精度与类型6 千位分隔符 本篇汇总了Py
  • L8-Flatten拍平多维数组的元素

    文章目录 案例说明1 最平凡 xff1a 数组索引访问2 最伤脑 xff1a 二次遍历 列表生成器3 最灵巧 xff1a 活用函数sum 为什么sum 还可以这样玩 xff1f 4 最省心 xff1a 一步到位 xff0c Numpy fl
  • L9-Python内部变量的作用域问题

    文章目录 写在开头一 连续等式判断二 函数内部变量作用域的变更1 对外部变量不进行运算 xff0c 直接访问2 直接对外部变量进行操作运算3 新增global声明 xff0c 再操作 写在开头 分享 记录两个有意思的案例 xff0c 平时碰
  • L10-简谈正则表达式中几个函数的使用

    文章目录 概述1 match 2 search 3 sub 4 compile 5 findall 6 finditer 7 split 8 subn 9 groups 10 贪婪模式与惰性模式注意事项 概述 正则表达式本身是一种小型的 高
  • L11-Python中的高阶函数的使用

    Python中的函数是一个对象 xff0c 既可以作为输入参数 xff0c 也可以作为返回结果 在这里聊聊几个常用的高阶函数 xff0c 来看看函数是如何被作为输入参数 返回结果来使用的 1 map 映射函数 语法 xff1a map fu