Python之高阶函数

高效Python必备之高阶函数 Python 高阶函数详解 阅读详情
  • 个人博客地址: Python之高阶函数
  • 做过Swift开发的童鞋都知道, 在Swift中有许多的高阶函数(Map, Filter, Reduce, Zip等), 这些在开发中让我们节省大量代码
  • Python中同样有许多的内置函数, 但是这里也只介绍几个常用的高阶函数

map映射

根据提供的函数对指定序列做映射, 并返回映射后的序列

map(function, iterable, ...)
参数/返回值
  • function – 函数, 序列中的每个元素需要执行的操作, 可以是匿名函数
  • iterable – 一个或多个序列
  • Python 2.x中返回列表, Python 3.x中返回map类
使用示例
# 调用外部函数
def square(x):
    return x ** 2

res = map(square, [1, 2, 3, 4])
print(res)
print(list(res))

# 使用匿名函数
res1 = map(lambda x: x * 3, [1, 2, 3, 4])
print(list(res1))

# 使用内置函数
res2 = map(str, [2, 3, 4, 5])
print(list(res2))

# 多个序列
res3 = map(lambda x, y: x * y, [1, 2, 3, 4], [3, 2, 4, 1])
print(list(res3))

'''输出结果
<map object at 0x1041a5da0>
[1, 4, 9, 16]
[3, 6, 9, 12]
['2', '3', '4', '5']
[3, 4, 12, 4]
'''

reduce

  • 函数会对参数序列中元素进行累积
  • 函数将集合中的所有数据进行下列操作:用传给educe中的函数function先对集合中的第1、2个元素进行操作,得到的结果再与第三个数据用function函数运算,最后得到一个结果
  • 在Python3中,reduce函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里,如果想要使用它,则需要通过引入functools模块来调用reduce函数
reduce(function, iterable[, initializer])
参数/返回值
  • function – 函数, 序列中的每个元素需要执行的操作, 可以是匿名函数
  • iterable – 需要执行操作的序列
  • initializer – 可选,初始参数
  • 最后返回函数的计算结果, 和初始参数类型相同
使用示例
# 求元素的和
def mySum(x, y):
    return x + y

list1 = [1, 2, 3, 4]
red = reduce(mySum, list1)
print(red)

red2 = reduce(mySum, list1, 2)
print(red2)

# 匿名函数
red3 = reduce(lambda x, y: x * y, list1)
print(red3)

red4 = reduce(lambda x, y: x * y, list1, 3)
print(red4)

red5 = reduce(lambda x, y: x + y, ['1', '2', '3', '4'], '数字: ')
print(red5)

'''输出结果:
10
12
24
72
数字: 1234
'''

filter过滤

用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表

filter(function, iterable)
参数/返回值
  • function – 过滤操作执行的函数
  • iterable – 需要过滤的序列
  • 序列的每个元素作为参数传递给函数进行判,然后返回True或False,最后将返回True的元素放到新列表中
  • Python 2.x中返回的是过滤后的列表, 而Python 3.x中返回到是一个filter类
使用示例
def isOdd(x):
    if x % 2 == 1:
        return True
    return False

list2 = [1, 2, 3, 4, 5, 6]
fil0 = filter(isOdd, list2)
print(fil0)
print(list(fil0))

# 匿名函数
fil = filter(lambda x: x % 2 == 0, list2)
print(list(fil))

'''输出结果:
<filter object at 0x1039e20f0>
[1, 3, 5]
[2, 4, 6]
'''

sorted排序

  • 在列表中有一个内置的排序函数sort(), 对列表的对象进行排序, 没有返回值
  • sorted()函数对所有可迭代的对象进行排序操作
  • sort与sorted区别:
    • sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作。
    • list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作
list.sort(cmp=None, key=None, reverse=False)
sorted(iterable[, cmp[, key[, reverse]]])
参数/返回值
  • iterable – 可迭代对象
  • cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则,reverse = True降序,reverse = False升序(默认)
  • sort没有返回值, sorted返回重新排序的列表
使用示例

使用sort()排序

# 用sort
list3 = [3, 7, 2, 5, 0, 4]
list3.sort()
print(list3)

aList = ['123', 'Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort(reverse=True) # 降序
print(aList)


def takeSecond(elem):
    return elem[1]

random = [(2, 2), (3, 4), (4, 1), (1, 3)]

# 指定第二个元素排序
random.sort(key=takeSecond)
print(random)

'''输出结果:
[0, 2, 3, 4, 5, 7]
['Taobao', 'Runoob', 'Google', 'Facebook', '123']
[(4, 1), (2, 2), (1, 3), (3, 4)]
'''

使用sorted()函数排序时

list4 = sorted(list3)
print(list4)

#按绝对值大小排序
list5 = [4,-7,2,6,-3]
#key接受函数来实现自定义排序规则
list6 = sorted(list5, key=abs)
print(list6)

# 将序排列
print(sorted(list5, key=abs, reverse=True))

#函数可以自己写
def myLen(str):
    return len(str)

list7 = ['b333','a1111111','c22','d5554']
list8 = sorted(list7, key=myLen) # 默认升序排序
print(list8)

# 匿名函数
list9 = sorted(list7, key=lambda x: len(x), reverse=True)
print(list9)

'''输出结果:
[0, 2, 3, 4, 5, 7]
[2, -3, 4, 6, -7]
[-7, 6, 4, -3, 2]
['c22', 'b333', 'd5554', 'a1111111']
['a1111111', 'd5554', 'b333', 'c22']
'''

enumerate

  • 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中
  • Python 2.3以上版本可用,2.6添加start参数
enumerate(sequence, [start=0])
参数/返回值
  • sequence – 一个序列、迭代器或其他支持迭代对象
  • start – 下标起始位置
  • 函数返回enumerate(枚举) 对象
使用示例
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
sea1 = enumerate(seasons)
print(sea1)
print(list(sea1))

# 自定义起始索引
sea2 = list(enumerate(seasons, start=1))
print(sea2)

# 普通的 for 循环
i = 0
for element in seasons:
     print(i, seasons[i])
     i +=1

# for 循环使用 enumerate
for i, ele in enumerate(seasons):
    print(i, ele)


'''输出结果:
<enumerate object at 0x103a46438>
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
0 Spring
1 Summer
2 Fall
3 Winter

0 Spring
1 Summer
2 Fall
3 Winter
'''

zip

  • 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存
  • 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
  • 函数有一个参数, 接受一个或多个序列
  • 函数利用*号操作符,可以将元组解压为列表
  • zip方法在Python 2.x中返回一个列表, 在Python 3.x中返回一个对象
zip([iterable, ...])
使用示例
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = [4, 5, 6, 7]

zip1 = zip(a, b)
print(zip1)
print(list(zip1))

# 两个列表不同元素个数, 元素个数与最短的列表一致
zip2 = zip(a, c)
print(list(zip2))

# `*`号操作符,可以将元组解压为列表
a1, c1 = zip(*zip(a, c))
print(a1)
print(c1)


'''输出结果:
<zip object at 0x103a41408>
[(1, 'a'), (2, 'b'), (3, 'c')]
[(1, 4), (2, 5), (3, 6)]
(1, 2, 3)
(4, 5, 6)
'''

reverse

  • reverse()函数用于将列表中的元素反向排列
  • 该函数没有参数没有返回值
  • 使用示例如下
list31 = [1, 2, 3, 4]
list31.reverse()
print(list31)

# 输出:
[4, 3, 2, 1]
单细胞转录组数据质控实战:如何用Seurat精准过滤低质量细胞(附完整代码) 本文详细介绍了使用Seurat进行单细胞转录组数据质控的实战方法,包括基因检出数、分子计数和线粒体基因比例等关键指标的解读与可视化技巧。通过动态阈值策略和高级质控技巧(如双细胞检测和红细胞过滤),帮助研究者精准过滤低质量细胞,提升数据分析可靠性。附完整代码示例,适合生物信息学研究人员参考实践。 阅读详情

相关推荐

LIN 协议测试

如下图,使用PicoScope示波器抓取报文Id为0x18的波形,数据场Byte1的长度为519.994μs,Byte1共10bit,计算位时间:tBit= 519.994/10 = 51.9994μs,符合预期。■ 唤醒信号是一个250μs到5ms的显性电平,发送唤醒信号的节点发送唤醒信号后150ms~250ms没有收到其他节点的唤醒信号,发送唤醒信号的节点发送新的唤醒信号。对于LIN主节点,检查发送的帧头长度是否符合设计要求,对于LIN从节点,检查从节点能否正确响应设计范围之内的帧头长度。

m0_63902994的博客 5929

python中列表表达式和几个高阶函数lambda、filter、map、zip、enumerate、reduce函数的用法

1. map函数和filter函数都接收两个参数, 第一个参数是函数名,第二个参数是可迭代对象 2. lambda匿名函数的用法, lambda函数后面的值是函数的参数, :后面的值是函数的返回值 3. zip函数将两个可迭代对象拼接成一个字典或元组式列表 list1 = [11, 22, 33, 44] # map函数和lambda函数对可迭代对象进行分别处理 ret = list(map(lambda x: x*2, list1)) print(ret) # filter函数和lambda函数对

weixin_42289273的博客 717

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。do文件是conformal的脚本文件,可以由综合工具(RTL Compiler/Genus)自己产生(write_do_lec),也可以手写。

NanDigits的博客 7246

Python 中的4个常用的高级函数zip、eval、map、enumerate、超方便!

zip、eval、map、enumerate 这4个高级函数你了解吗?看我这一篇就够! 每个函数都列举了多个由浅入深的示例,让你清楚的理解这4个高级函数的用法。同时用传统的for循环来模拟这些函数的实现方法。用最通俗的方法让你看懂。

aoeryule的博客 886

汇川AM系列PLC玩转CNC:手把手教你用File模式读取G代码文件(附避坑指南)

本文详细介绍了如何使用汇川AM系列PLC的File模式读取G代码文件,涵盖从CAD设计到PLC配置的全流程。特别针对路径格式、文件类型等常见问题提供避坑指南,帮助工程师快速实现CNC加工的自动化控制。

weixin_33582311的博客 402

LittleFS+NANDFLASH软硬件配置详情

littleFS文件系统说明及移植过程

weixin_43200844的博客 2368

python函数进阶(lambda/range/map/reduce/filter/zip/enumerate)

主要讲的是稍微高级一点的函数,这些函数往往能使代码更简洁,提高编程效率。 一:lambda匿名函数 为什么说是匿名函数呢? 因为python中声明函数的方式只有def和lambda两种,lambda函数实际上是一个表达式,而不是一个语句;其主体是一个单独的表达式而不是一个代码块: lambda arguement1, argumnet2, argu...

wjyjiayou的博客 564

GNSS差分码偏差(DCB)从原理到实战:如何避免数据处理中的常见错误

本文深入解析GNSS差分码偏差(DCB)的原理及其对高精度定位的关键影响。针对数据处理中因忽略DCB校正导致的常见错误,如单系统PPP高程偏差、多系统融合精度下降及电离层研究失真等,提供了实战解决方案与主流DCB产品获取、集成方法,帮助用户有效规避陷阱,提升数据处理精度。

k5l6m的博客 223

python中的高阶函数

@ 1 什么是高阶函数? 只要满足下面的任意一个条件就是高阶函数 1、一个函数的函数名作为参数传给另外一个函数 2、一个函数返回值(return)为另外一个函数(返回为自己,则为递归) 下面分别举例详细说明: 1.1 高阶函数:一个函数的函数名作为参数传给另外一个函数 def func(): print("定义一个普通函数") def high_level(func): ...

求真、务实 1万+

华为OD机考双机位C卷 - 打印机队列 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 打印机队列

算法大师! 4619

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3002

【Python】—— 高阶函数

高阶函数详解

m0_56069910的博客 1856

关于在线excel插件Univer笔记教程

univer在线excel插件确实是够强大,但也存在不少bug,用户用起来是真的很爽,和本地的wps差不多,但真正的开发起来是真的费劲。由于文档提供的信息不足,我们很多功能只能去看他们插件里的源代码,然后一点点测试,一点点尝试研究。此文章可省去五天的研究成本

guiplan 5825

什么是 Python 高阶函数?

在 Python 编程中,高阶函数(Higher-Order Function) 是指接受一个或多个函数作为参数,或者返回一个函数作为结果的函数。高阶函数是函数式编程(Functional Programming)的重要概念,它能够让代码更加简洁、灵活,并提高代码的复用性。本文将深入介绍 Python 高阶函数的概念、常见用法,以及它们在实际编程中的应用。

1085

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python入门10:高阶函数

高阶函数是指接受函数作为参数或者返回函数作为结果的函数。它在函数式编程中是一个重要概念(函数式编程(Functional ProgrammingFP)是一 种编程范式,它将计算视为数学函的求值,并且避免使用可变数据结构和 改变状态的操作。函数式编程的核心思想是将函数作为程序的基本构建块, 强调不可变性和纯函数的使用)。

m0_74488469的博客 2054

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python常用高阶函数

高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数。 为了便于理解,我们从实际例子来看看函数当做参数被传递到另个函数是什么样的。我们把abs()函数赋值给了f变量,接下来你就可以像使用abs()函数本身那样使用f变量了,区别只是换了个名字而已。 # 将求绝对值的abs函数赋值给f变量 f = abs # f变量等同于ab...

Anders's Blog 6580

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python的高阶函数是什么_Python高阶函数是什么?怎么用?

初次了解的小伙伴可能有些疑惑,对于“高阶”不明白,或者高阶函数和函数两者之间有什么关系?要怎么使用呢?有这些疑惑的小伙伴可以看下面内容~举一个最简单的高阶函数deffoo(x,y,f):#f是一个函数"""把x,y分别作为参数传递给f,最后返回他们的和:paramx::paramy::paramf::return:"""returnf(x) f(y)deffo...

weixin_39897267的博客 246

python 高阶函数和 functools 模块

python高阶函数和functools模块

weixin_65289420的博客 1521

python中高阶函数及内置高阶函数

目录1. 高阶函数的定义2. 内置的高阶函数2.1 map函数2.2 reduce()函数2.3 filter过滤函数2.4 sorted函数高阶函数应用3. 匿名函数(lambda)3.1 匿名函数的定义3.2 基本应用4. 应用(快速生成内推码,验证码) 1. 高阶函数的定义 > 高阶函数是一个返回函数的函数。 > 他的实参是一个函数名,他的返回值是一个函数。 > 函数可...

rrrr_ffff的博客 744

Python高阶函数

过滤操作执行的函数iterable# 需要过滤的序列作用:过渡序列中不符合条件的元素。filter有两个参数,第1参数可以是函数,也可以是None.当第1个参数是函数的时候,将第2个参数中每个元素进行计算。当第1个参数是None时,直接将第二个参数中为True的值筛选出来。filter() 方法返回一个迭代器(filter 对象),该迭代器通过了 iterable 中每个元素的函数检查,返回的是原序列中的值,非布尔值。function。

545

Python 高阶函数(详解)

1、当定义函数时,函数的参数是一个函数,那么定义的这个函数可以称为高阶函数。2、调用高阶函数时需要特别注意,由于高阶函数中参数类型是个函数,因此在进行调用时,我们只需要传递函数的名字即可,而不是进行函数调用。3、函数作为参数的类型时,可以是内置的函数,如abs,也可以是其它模块下的函数,如sqrt,也可以是自定义的函数,如num_num,像上面代码中num_num函数的函数体只有一行代码,可以用lambda表达式的方式写。

2301_78209919的博客 1817

Python 高阶函数

Emily| 作者Python小例子| 来源Python 高阶函数可以用来接收另一个函数作为参数的函数叫做高阶函数。如下f有一个参数g,而g又是函数,所以f是高阶函数:deff...

简说Python的博客 396

Python函数:高阶函数的应用

本章介绍了python高阶函数的定义以及内置高阶函数的应用。

2403_86719076的博客 1697

python中的高阶函数的定义及内置高阶函数

高阶函数介绍 普通函数中的参数是一种数据类型,比如列表,字符串,整型 高阶函数的实参是一个函数名,函数的返回值是一个函数。 例如在python中有一个函数是 abs 用来求整型的绝对值: 函数可以复制成一个变量。 def fun(x,y,f): return f(x),f(y) print(fun(-10,34,abs)) # f = abs 几个内置高阶函数 ma...

thermal_life的博客 1759

python高阶函数_Python之高阶函数如何理解?

我们先要了解一下什么是所谓的高阶函数;看定义:什么是高阶函数?高阶函数:我们知道一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足其一,则为高阶函数。常见的高阶函数:map()、reduce()、filter()等也是python内置的函数,也可以自定义高阶函数,其实装饰器也算一种高阶函数通过这些介绍应该能对高阶函数有一个详细的了解...

weixin_39560924的博客 113

Python高阶函数总结

前言:本博文主要讲解Python高阶函数的概念与用法,更多知识请访问:深入浅出Python——Python高级语法之函数 一、高阶函数 把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。 ...

路虽远,行则必至! 1456
上一篇: Tkinter之组件布局和事件绑定
下一篇: 发布开源框架到CocoaPods入坑指南
CodeTitan
博客等级 码龄9年 51粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值