一 内置函数的常用高阶函数实例理解
函数 | filter(function, iterable) | map(function, iterable, ...) | sorted(iterable, cmp=None, key=None, reverse=False) |
描述 | 过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。 | 根据提供的函数对指定序列做映射处理。 | 对所有可迭代的对象进行排序操作。 |
实例1 |
'''2. 从指定2个数字范围内中找出所有的回文数字。 |
'''1. 提取列表中每个字符串成员中的数字。 |
'''1. 对下列数据进行排序 |
二 闭包函数实例理解
1 编写函数,计算两个数字的平方的和,基于闭包原理缓存计算的结果到内存中,当出现重复的参数时,直接从外函数的变量中提取结果。 """ 实例1: 首次输入:7, 2 [首次出现,记录到外函数的变量中] 结果:53 # 49+4 再次输入:2, 3 [首次出现,记录到外函数的变量中] 结果:13 # 4+9 再次输入:7, 2 [重复输入,直接从外函数的记录中提取结果,不需要经过运算] 结果:53 # 49+4 """ def outer(): result = { # (7, 2): 53, } def inner(a, b): key = (a, b) if key in result: print("来自缓存的结果:") return result[key] ret = a**2+b**2 print("来自计算的结果:") result[key] = ret return ret return inner calc = outer() ret = calc(7,2) print(ret) #来自计算的结果:53 ret = calc(2,3) print(ret) #来自计算的结果:13 ret = calc(7,2) print(ret) #来自缓存的结果:53
三 递归函数实例理解
python在内存中是使用栈桢空间是用来运行函数的。调用函数就是开辟栈桢空间的过程,调用结束之后,会自动释放栈桢空间。
每调用一次函数,就开辟一个栈桢空间,每结束一个函数,就释放一层栈桢空间,递归本质上就是开辟和释放栈桢空间的过程。
递归函数的运行需要占用的空间内存等性能消耗远比循环要高。使用递归时务必在函数调用前添加一个判断条件,直到不满足退出重复操作。如果递归的层数过多,层数达到1000层则报错,将会被python解释器强制终止递归。
建议大家针对简单操作少用递归,多用循环,除非这个问题真的很适合使用递归。而针对复杂操作多用递归,少用循环,因为复杂操作情况下的循环代码(4层以上嵌套循环),很容易让人懵逼。
以下为一些递归函数实例便于理解
""" 1. 编写递归函数,计算任意数n的阶乘。 1*2*3*4...*n n 的阶乘 采用递归的思路: 假设n=4 1*2*3*4 要计算4的阶乘,先要计算3的阶乘是多少 1*2*3 要计算3的阶乘,先要计算2的阶乘是多少 1*2 要计算2的阶乘,先要计算1的阶乘是多少 1 1的阶乘就是1呀!!! 得到1的阶乘1以后, 则2的阶乘就是 fn(2) ---> fn(1)*2 则3的阶乘就是 fn(3) ---> fn(2)*3 """ # def fn(n): # if n == 1: # return 1 # else: # return n*fn(n-1) # # ret = fn(4) # print(ret) #24 """ 2. 编写递归函数,输出斐波那契数列的第n项。 斐波那契数列: 0,1,1,2,3,5,8,13,21,34,55... 计算第n项的数列 fa(n) ---> fa(n-1) + fa(n-2) 假设n=5 fn(5) ---> fa(4) + fa(3) fa(4) ----> fa(3) + fa(2) fa(3) ---> fa(2) + fa(1) fa(2) ---> fa(1) + fa(0) 1 0 """ # def fa(n): # if n == 0: # return 0 # if n == 1: # return 1 # return fa(n-2) + fa(n-1) # # print( fa(4) ) # 3
3. 思路:
"""
3. 编写递归函数,输出类似123454321这样的回文数字。
"""
def func(s):
if s < 5:
print(s, end="")
func(s + 1)
print(s, end="")
func(1)
4. 思路
4.编写函数,基于递归原理,反转字符串
实例1:
输入:"12453"
结果:"35421"
实例2:
输入:"abf"
结果:"fba"
def fn(content):
if content == "":
return content
else:
return fn(content[1:]) + content[0]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现