本文已参与「新人创作礼」活动,一起开启掘金创作之路。
递归
递归的应用场景
递归是一种编程思想,应用场景:
- 在我们日常的开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现;
- 在后续的算法中,很多算法都离不开递归,例如:快速排序
递归的特点
- 函数内部自己调用自己
- 必须有出口
应用:3以内数字累加和
# 3 + 2 +1
#num 表示空的意思
def sum_numbers(num):
#当前数字+当前数字-1的累加和
#1.如果是1,直接返回1--到出口
if num==1:
return 1
#如果不是1,重复执行累加并返回结果
return num + sum_numbers(num-1)
# 当为3的时候就输出6
sum_result=sum_numbers(3)
#输出结果为6
print(sum_result)
这里的话要知道return 这个函数的用法,return 函数的用户1返回值,2停止函数运行,
lambda表达式
lambda的应用场景
如果一个函数有一个返回值,并且只有一句话代码,可以使用lambda简化
lambda语法
lambda 参数列表 : 表达式
注意
- lambda表达式的参数可有可无,函数的参数在lambda表达式完全适合
- lambda表达式能接收任何数量的参数但只能返回一个表达式值
快速入门
#函数
def fn1():
#返回值200
return 200
#打印为空
print(fn1)
#输出200
print(fn1())
#lambda表达式也是一个匿名函数
fn2=lambda:100
#打印内存地址
print(fn2)
#打印的是100
print(fn2())
输出结果
200
at 0x7f6aba735280>
100
示例:计算a+b
函数实现
#设置一个函数add,函数里面有ab两个行参
def add(a,b):
#函数的执行代码是a+b 行参相加
return a + b
#返回值等于add函数,但是这个适合我们给到了这个函数里面1和2顶掉了行参的位置
result = add(1,2)
#这个适合调用返回值,返回值调用add函数,并把1和2带入函数执行代码中去
#输出结果为3
print(result)
输出
3
lambda实现
#定义一个变量,变量所赋值的是一个匿名函数,函数中有a,b两个行参,而执行代码是a+b
fn1=lambda a,b:a+b
#输出fn1并把数字1和2带入到变量中,而fn1中实参只要a和b那么1和2就会顶掉ab位置,任何执行代码a+b(1+2)
print(fn1(1,2))
输出
3
lambda的参数形式
无参数
#直接就是lambda冒号跟着一个返回值100
fn1=lambda:100
#直接输出fn1()变量名函数调用 输出100
print(fn1())
一个参数
#直接就是lambda 并且有一个形参a 冒号跟着一个返回值a
fn1=lambda a:a
#这个适合输出调用fn1变量名 并且传入hello world 到形参位置,当中执行输出的适合,返回值会输出形参a位置上的数值hello world
print(fn1('hello world'))
默认参数
#这里定义了一个lambda 而里面有三个形参为abc,但是形参c是有值的那么形参c就是默认参数,紧跟着冒号 执行代码a+b+c,如果ab形参都没有传值进来,那么就只会输出100了
fn1=lambda a,b,c=100: a+b+c
#这时候输出变量fn1 并且传值到ab两个形参位置上,并执行代码a+b+c(10+20+100)=130(输出结果)
print(fn1(10,20))
可变参数:*args
fn1 =lambda *args: args
print(fn1(10,20,30))
#他虽然有一个形参,但是可以传入多个值,因为他是一个可变参数加一个*星号就可以了
#注意:这里的可变参数传入到lambda之后,返回值为元组
#输出结果为(10, 20, 30)
可变参数:**kwargs
fn1 =lambda **kwargs:kwargs
print(fn1(name='python',age=20))
#输出结果
#{'name': 'python', 'age': 20}
#注意:这里的可变参数传入到lambda之后,返回值为字典
lambda的应用
带判断的lambda
#首先lambda看作一个函数
#函数里面有ab两个形参
#冒号跟着执行代码
#执行代码是 if判断 当a大于b 就执行输出a else 否则打印出b
fn1 = lambda a,b:a if a > b else b
print(fn1(1000,500))
#输出1000
列表数据按字典key的值排序
students =[
{'name':'TOM','age':20}
{'name':'ROSE','age':19}
{'name':'Jack','age':22}
]
#sort(key=lambda..., reverse=bool数据)
#1.name key 对应的值进行升序排序
students.sort(key=lambda x: x['name'])
print(students)
#2.name key对应的值进行降序排序
students.sort(key=lambda x: x['name'],reverse=True)
print(students)
#3.age key对应的值进行升序排序
students.sort(key=lambda x: x['age'])
print(students)
\