首页 > 其他分享 >day12-递归与高阶函数

day12-递归与高阶函数

时间:2023-03-03 17:01:55浏览次数:35  
标签:return day12 递归 高阶 list func print data lambda

一、递归

# 衔尾蛇

# 递归特点
# 1,函数内部调用自己
# 2,必须要有出口

实例1:# 有规律循环

打印1-9

def func(start, stop):
    print(start)  # 9
    if start == stop:  # 结尾 递归的出口
        return    # 结束函数运行,停止递归

    func(start + 1, stop)  # 自己调用自己

func(1, 9)

1
2
3
4
5
6
7
8

加入步长

def func(start, stop, step=1):
    print(start)  # 9
    if start == stop:  # 结尾 递归的出口
        return

    func(start + step, stop, step)  # 自己调用自己


func(1, 9, 2)

1
3
5
7
9

实例2:# 无规律循环

list_data = [1, [2, 3, [4, 5, 6, [7, 8, 9, [0]]]]]

def func(data):
    if type(data) == list:
        for i in data:
            func(i)
    else:
        print(data)


func(list_data)

1
2
3
4
5
6
7
8
9
0

二、lambda表达式
1、lambda 匿名 #匿名函数  没有名字的函数
2、优点 节省内存空间 优化代码
3、当函数里面的代码只有一行 可以转换为匿名函数

def add(a, b): return a + b 

(lambda a, b: a + b)(1, 2)
# print(add(1, 2))

add1 = (lambda a, b: a + b)  # 定义名字,重复使用
print(add1(1, 2))
print(add1(2, 3))

# 实际中,只使用一次 不需要考虑函数的名字,只需要功能
# lambda 传入的参数:返回的数据

#实例 5!=5x4x3x2x1
def func(data):
    if data == 1:
        return 1  # 出口
    return data * func(data - 1)

print(func(5))
# func(5) 5xfunc(4)
# func(4) 4xfunc(3)
# func(3) 3xfunc(2)
# func(2) 2xfunc(1)
# func(1) 1

三、高阶函数
1、函数调用另外一个函数
2、高阶函数自带了for循环,变成了一个生成器对象
3、map 映射(列表推导式可以代替)

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def int_to_str(data):
    return str(data)
print(list(map(int_to_str, list1)))

print(list(map(lambda i: str(i), list1)))  # 生成器对象 0秒钟
print(list(map(str, list1)))

 4、reduce 减,对列表中的两个数据进行操作,不能对3个数进行操作

from functools import reduce  # from 从什么地方 import 导入什么东西

list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(reduce(lambda a, b: a + b, list2))    # 45

 

list3 = [[1, 2], [3, 4], [4, 6]]

def aa(a, b):
    # a[1] + b[1] if type(a) == list else a + b[1]    #三元表达式

    if type(a) == list:
        return a[1] + b[1]
    else:
        return a + b[1]

print(reduce(aa, list3))    # 12
print(reduce(lambda a, b: a[1] + b[1] if type(a) == list else a + b[1], list3))  # lambda表达式

 

标签:return,day12,递归,高阶,list,func,print,data,lambda
From: https://www.cnblogs.com/xiaoabai/p/17176255.html

相关文章