递归
递归就是自己调用自己
必须要有跳出出口
案例
# 3+2+1=6
def sum_func(num):
if num == 1:
return 1
return num + sum_func(num - 1)
print(sum_func(3))
Lambda
lambda表达式的参数可有可无,函数的参数在lambada表达式中完全适用
Lambda表达式可以接受任何数量的参数但只能返回一个表达式的值
Lambda表达式也叫做匿名函数
实例
# 通函数
def fun():
return 100
print(fun())
# lambda函数
fun1 = lambda: 100
print(fun1)
print(fun1())
Lambda实现2个数相加
# 普通函数实现
def func1(a, b):
return a + b
num1 = func1(1, 2)
print(num1)
# lambda实现
num2 = lambda a, b: a + b
print(num2(1, 2))
Lambda 各个参数实例
# lambda一个参数
fun1 = lambda a: a
print(fun1("我是python"))
# lambda默认参数
fun2 = lambda a, b=10: a + b
print(fun2(10))
# lambda可变参数 *args
fun3 = lambda *args: args
print(fun3(1, 20, 30))
# lambda可变参数**kwargs
fun4 = lambda **kwargs: kwargs
print(fun4(name="zhangsan", age=18))
Lambda对字典排序
# lambda对字典排序
dicts = [
{"name": "zhangsan", "age": 16},
{"name": "lisi", "age": 18},
{"name": "wangwu", "age": 8},
{"name": "zhaoliu", "age": 23}
]
# name升序
dicts.sort(key=lambda x: x["name"])
print(dicts)
# name降序
dicts.sort(key=lambda x: x["name"], reverse=True)
print(dicts)
#age升序
dicts.sort(key=lambda x: x["age"])
print(dicts)
#age降序
dicts.sort(key=lambda x: x["age"], reverse=True)
print(dicts)
高阶函数abs/round函数
# 高阶函数abs函数
print(abs(-10))
# 高阶函数round()四舍五入
print(round(1.2))
print(round(1.9))
使用map(func,lst)计算一个序列中的各个数字的2次方
list1 = [1, 2, 3, 4]
def func(num):
return num ** 2
reslut = map(func, list1)
print(reslut)
print(list(reslut))
reduce(func,lst):必须要有2个参数,每次func计算的结果继续和序列的下一个元素做累计计算
注意:reduce()传入的参数func必须接受2个参数
#reduce(func,lst):必须要有2个参数,每次func计算的结果继续和序列的下一个元素做累计计算
#注意:reduce()传入的参数func必须接受2个参数
import functools
list1 = [1, 2, 3, 4]
def func(x,y):
return x + y
result = functools.reduce(func,list1)
print(result)
filter():主要用于过滤序列,过滤掉不符合条件的元素,返回一个对象,如果要转换列表,可以使用list()转换
# filter():主要用于过滤序列,过滤掉不符合条件的元素,返回一个对象,如果要转换列表,可以使用list()转换
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
return x % 2 == 0
result = filter(func,list1)
print(list(result))
将上续的高阶函数全部使用拉姆达表达式简化实现
扫描二维码关注公众号,回复:
10810920 查看本文章
# 使用map(func,lst)计算一个序列中的各个数字的2次方
list1 = [1, 2, 3, 4]
reslut = map(lambda num : num ** 2, list1)
print(reslut)
print(list(reslut))
# reduce(func,lst):必须要有2个参数,每次func计算的结果继续和序列的下一个元素做累计计算
# 注意:reduce()传入的参数func必须接受2个参数
import functools
list1 = [1, 2, 3, 4]
result = functools.reduce(lambda x, y: x + y, list1)
print(result)
# filter():主要用于过滤序列,过滤掉不符合条件的元素,返回一个对象,如果要转换列表,可以使用list()转换
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x % 2 == 0, list1)
print(list(result))
作者:阿超
原创公众号:『Python日常笔记』,专注于 Python爬虫等技术栈和有益的程序人生,会将一些平时的日常笔记都慢慢整理起来,也期待你的关注和阿超一起学习,公众号回复【csdn】优质资源。