[Python]学习基础篇:函数的进阶篇

简介:

对于函数大家都熟知不过了,但是对于一些函数还是费力的理解,下来我们来看看Python自带的一些函数,在此之前,还是请大家了解什么是高阶函数。 
高阶函数:函数中的高阶函数

  • map()函数 
    格式:map(func,seq) 
    返回值:list 
    map函数的作用是将参数函数func作用于seq中的每一个元素,每个元素产生的结果存放进list中。 
    例如:我们以函数func=x+x*x为例,作用于序列[1,2,3,4,5,6,7,8]上

!/bin/python def func(x):     return x+x*x list=map(func,[1,2,3,4,5,6,7,8]) print(list) 运行结果:[2,6,11,20,30,42,58,72]
  • filter()函数 
    格式:filter(func,seq) 
    filter函数的作用和map函数的作用一样,将函数作用于序列的每一个元素上,但是不同的是filter会根据返回值True/false来决定保留还是丢弃,所以被称之为过滤函数 
    例如:我们有一个函数查找字符串中为小写字母的元素

!/bin/python def func(x):     return x.islower() str='jiJUHDEjideqHEUH'list=filter(func,list(str)) print(list) 运行结果:j['i','j','i','d','e','q']
  • reduce()函数 
    格式:reduce(func,seq) 
    返回值:func的累积结果 
    reduce函数不同于map和filter函数,它是将函数作用于整个seq上,并将结果和序列的下一个元素座累积计算。 
    例如:序列求和,在python中看可以使用sum函数实现,但是也可以使用reduce函数实现

!/bin/python def sum(x,y):     return x+y count=reduce(sum,[1,2,3,4,5,6,7,8,9,10]) print(count) 运行结果:

对于以上的例子都是对于单个函数的简单运用,下来我们组合的使用以上函数。 
例如:求一个序列中的水仙花数,并将水仙花数相加

!/bin/pythondef is_bai(x):     return x>100def is_flower(x):     a=int(x/100)     b=int((x-a*100)/10)     c=x-a*100-b*10     return a*a*a+b*b*b+c*c*cdef func1(x,y):     return x+y list=[12,123,153,170,372,371] sum=reduce(func1,map(is_flower,filter(is_bai,list)))

  • 匿名函数 
    匿名函数是指不适用def关键字定义一个函数,而是使用lambda创建一个函数。 
    格式:lambda 参数:返回值 
    对于匿名函数,它的主体不是一个代码块,而是一个表达式,下来我们用一个例子来理解一下lambda的格式。 
    如:我们求两个是的和 
    一般情况我们是这样来编码的:

!/bin/python def sum(x,y):     return x+y sum(1,3) 结果为:4

我们使用匿名函数来完成:

!/bin/python c=lanbda x,y:x+y print(c) 结果为:4

格式中的冒号(:)是分隔符 
匿名函数的调用: 
变量=lanbda 参数:返回值

注意:Python对匿名函数的支持有限,只有一些简单的情况下可以使用匿名函数。


  • 偏函数 
    偏函数是由Python模块中的functools模块提供的一个函数,这样可以是代码更加简洁 
    格式:partial(funct,funct_argx1,funct_argx2……) 
    偏函数是将所有承载的函数作为partial()函数的一个参数,原函数的各个参数一次作为partial()函数的后续参数,除非使用关键字参数。 
    作用:把一个函数的某些参数固定住(设置默认参数),返回一个新函数。 
    下来我们来举个例子理解一下这个格式。 
    如:我们求不同数对于3的取余

!/bin/python def mod(m,n)                  return m%n func_new=partial(mod,3) print('调用自定义函数,100对3取余',mod(100,3)) print('调用偏函数,100对3取余',func_new(3)) 运行结果为: 调用自定义函数,100对3取余1 调用偏函数,100对3取余1

对于偏函数可以设定默认值降级函数调用的难度,同时当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

本文转自lnsaneLlinux博客51CTO博客,原文链接http://blog.51cto.com/lnsane784/2058248如需转载请自行联系原作者


Insane_linux


相关文章
|
1月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
252 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
66 0
|
29天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
30天前
|
存储 数据安全/隐私保护 索引
|
20天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
22天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
24天前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
27 4
|
26天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
19 1
|
1月前
|
索引 Python
Python中的其他内置函数有哪些
【10月更文挑战第12天】Python中的其他内置函数有哪些
15 1
|
1月前
|
机器学习/深度学习 人工智能 架构师
Python学习圣经:从0到1,精通Python使用
尼恩架构团队的大模型《LLM大模型学习圣经》是一个系统化的学习系列,初步规划包括以下内容: 1. **《Python学习圣经:从0到1精通Python,打好AI基础》** 2. **《LLM大模型学习圣经:从0到1吃透Transformer技术底座》**
Python学习圣经:从0到1,精通Python使用