Python日常笔记(13) - Lambda-递归

递归

递归就是自己调用自己
必须要有跳出出口

案例

# 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))


将上续的高阶函数全部使用拉姆达表达式简化实现

# 使用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】优质资源。

发布了55 篇原创文章 · 获赞 16 · 访问量 9510

猜你喜欢

转载自blog.csdn.net/duchaochen/article/details/105032789