递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

简介: 本节重点介绍递归函数,匿名函数

上一篇:详解函数返回值和参数 | 手把手教你入门Python之四十三
下一篇:详解高阶函数和闭包 | 手把手教你入门Python之四十五

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

递归函数

<1>什么是递归函数

通过前⾯的学习知道⼀个函数可以调⽤其他函数。
如果⼀个函数在内部不调⽤其它的函数,⽽是⾃⼰本身的话,这个函数就是递归函数。

<2>递归函数的作⽤

举个例⼦,我们来计算阶乘 n! = 1 2 3 ... n
解决办法1:使⽤循环来完成

def cal(num):
 result,i = 1,1
 while i <= num:
 result *= i
 i+= 1
 return result
print(cal(3))

看阶乘的规律

1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

解决办法2:使⽤递归来实现

def factorial(num):
 result = 1
 if num == 1:
 return 1
 result = num * factorial(num -1)
 return result
print(cal(3))

原理

image.png

练习

使⽤递归实现斐波那契数列。1、1、2、3、5、8、13、21、34、……

image.png

image.png

image.png

递归的练习

image.png
image.png

image.png

匿名函数

⽤lambda关键词能创建⼩型匿名函数。这种函数得名于省略了⽤def声明函数的标准步骤。
lambda函数的语法只包含⼀个语句,如下:

lambda 参数列表: 运算表达式

如下实例:

sum = lambda arg1, arg2: arg1 + arg2
# 调⽤sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

以上实例输出结果:

Value of total : 30
Value of total : 40

Lambda函数能接收任何数量的参数但只能返回⼀个表达式的值
匿名函数可以执⾏任意表达式(甚⾄print函数),但是⼀般认为表达式应该有⼀个计算结果供返回使⽤。
python在编写⼀些执⾏脚本的时候可以使⽤lambda,这样可以接受定义函数的过程,⽐如写⼀个简单的脚本管理服务器。

image.png
image.png

自定义一个匿名函数的使用场景

image.png
image.png

应用场合

函数作为参数传递

>>> def fun(a, b, opt):
... print("a = " % a)
... print("b = " % b)
... print("result =" % opt(a, b))
...
>>> add = lambda x,y:x+y
>>> fun(1, 2, add) # 把 add 作为实参传递
a = 1
b = 2
result = 3

练习:
有⼀个列表

students = [
 {'name': 'zhangsan', 'age': 18, 'score': 92},
 {'name': 'lisi', 'age': 20, 'score': 90},
 {'name': 'wangwu', 'age': 19, 'score': 95},
 {'name': 'jerry', 'age': 21, 'score': 98},
 {'name': 'chris', 'age': 17, 'score': 100},
]

要求,对上述列表⾥的数据按照score进⾏升序排序。

Sort方法的使用

image.png

image.png
image.png

Python中使⽤函数作为参数的内置函数和类:

image.png

Filter&map&reduce方法

image.png

map的使用

image.png

reduce的使用

image.png
image.png
image.png

内置函数总结

image.png

image.png
image.png

相关文章
|
2天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
2天前
|
存储 索引 Python
Python从入门到精通——1.3.1练习编写简单程序
Python从入门到精通——1.3.1练习编写简单程序
|
2天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
2天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
2天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
8天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
35 0
|
9天前
|
机器学习/深度学习 数据采集 算法
scikit-learn入门指南:从基础到实践
【4月更文挑战第17天】这篇指南介绍了scikit-learn,一个Python数据分析和机器学习的重要库。内容涵盖安装、数据加载与预处理、模型训练(如KNN分类器)、评估、调参优化及高级应用,如降维和聚类。通过实例展示了scikit-learn在分类任务中的使用,强调其在数据科学中的重要性。要深入了解,可参考官方文档和实践案例。
|
10天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作