1.匿名函数

# 1.匿名函数lambda# 简化代码 减少占用的内存print('1.匿名函数lambda')def func():    print(10)func()func = lambda: print(10)# 出现警告的原因是:# 因为你把lambda表达式赋给了另一个变量。# 但lambda表达式本就是一个匿名的函数,# PEP8规范并不推荐将lambda表达式赋值给一个变量,# 再通过变量调用函数这种方式。# 这种方式不能体现lambda表达式的特色,# 基本只是复制def的功能,# 同时这个变量名其实也不是lambda表达式真正的函数名,# 还显得比def方式更容易混淆。# 事实上lambda表达式的正确用法应该是在不分配变量的情况下使用# lambda 形参: print(10)# 有一个返回值,并且只有一句代码# 参数部分可有可无def func0(a, b):    return a+bprint(func0(1, 2))func00 = lambda a, b: a + bprint(func00(1, 2))# 排序list1 = [[3, '1'], [1, '3'], [2, '2']]# for i in list1:#     print(i[0])  # 输出前面的数字list1.sort(key=lambda i: i[0])  # 根据list1每个元素中的第一个元素从小到大排序print(list1)list1 = [[3, '1'], [1, '3'], [2, '2']]# for i in list1:#     print(i[1])  # 输出后面的字符串list1.sort(key=lambda i: i[1])  # 根据list1每个元素中的第二个元素从小到大排序print(list1)list1 = [[3, '1:3'], [1, '3:2'], [2, '2:1']]# for i in list1:#     print(i[1][-1])  # 输出字符串的最后一个字符list1.sort(key=lambda i: i[1][-1])  # 根据list1每个元素中的第二个元素的-1索引位置的数据从小到大排序print(list1)

2.高阶函数map

# 2.高阶函数map(func,list)# 映射出一个新的数据print()print('2. map()')list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]map(lambda i: str(i), list1)  # 将list1中的每个数据转换成str类型# print(map(lambda i: str(i), list1))  # 打印出的是迭代器,而不是期望输出的数据# for i in list1:#     print(str(i))print(list(map(lambda i: str(i), list1)))# for i in list1:#     print(i+1)list2 = list(map(lambda i: i + 1, list1))  # list1中的每个数据+1print(list2)

3.高阶函数reduce()

# 3.高阶函数reduce(func,list)# 累计# 需要导入模块from functools import reduce  # 只导入了这一个函数print()print('3. reduce()')list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]print(reduce(lambda a, b: a + b, list1))  # 求和 和sum()作用相同print(reduce(lambda a, b: a * b, list1))  # 求积

4.高阶函数filter

# 4.高阶函数filter(func,list)  筛选# 过滤函数# 过滤不符合的表达式# 过滤走不符合条件的数据,保留合乎条件的数据print()print('4. filter()')list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]# for i in range:#     if i%2 !=0:print(list(filter(lambda i: i % 2 == 0, list1)))  # 选出偶数

5.递归

# 5.递归  套娃# 递归特点:# 1,函数内部自己调用自己# 2,必须要有接口print()print('5.递归')def func1(data):    if data == 1:        return 1    return data + func1(data - 1)print(func1(3))  # 3+2+1print()
# 将列表中的每个数据输出def func2(list0): if type(list0) == list: # 判断是否是列表 for i in list0: func2(i) else: print(list0)list1 = [1, 2, [3, [4, 5], [6, 7, 8]], [9, 0]]func2(list1)

# 今日作业"""用递归求5的阶乘(5*4*3*2*1)"""print()print('今日作业')def func3(data: int) -> int:    """    阶乘函数    :param data:    :return:    """    if data == 1:  # 判断输入的数据是否为1        return 1    return data * func3(data - 1)print(func3(5))