python中的高阶函数

1.匿名函数

# lambda表达式
# 匿名函数
# 没有名字的函数 相当于
# 优点:节省内存空间 优化代码
# def add(a, b):
#     return a+b
def add(a, b): return a + b


# 当函数里面的代码只有一行的时候可以这样写!


print(add(1, 2))

# 但函数里面的代码只有一行,可以转换为匿名函数..


# lambda 传入的参数: 返回的数据
# (lambda a, b: a+b)
(lambda a, b: a + b)(1, 2)  # 只使用一次  调用匿名函数,在后面加括号和参数
add1 = (lambda a, b: a + b)  # 定义名字,可重复使用
print(add1(1, 2))
print(add1(2, 6))

# 实践中一般只使用一次,不需要考虑函数的名字,只需要完成功能

python中的高阶函数

 

 

2.递归

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


# 有规律的循环(线性循环)
# 打印 1 ~ 9
def func(start, stop, step=1):  # 默认参数
    print(start)
    if start == stop:  # 结束 递归的出口
        return  # 作用只是结束函数运行,停止递归  默认是None  空

    func(start + step, stop, step)


func(1, 9)  # range(1, 10, 1)

python中的高阶函数

 

 

# 无规律循环(非线性循环)
list_data = [1, [2, 3, [4, 5, 6, [7, 8, 9, [0]]]]]


# 按照顺序打印1,2,3,4,5,6,7,8,9,0
# 如何判断i是否属于某个类型
# isinstance(要判断的变量, 要判断的类型)
# print(isinstance([1, 2], list))  # [1, 2]是list类型,返回True
# print(isinstance([1, 2], str))  # [1, 2]不是str类型,返回False
# for i in list_data:
#     if type(i) == list:  # 也可以这样
#         for j in i:
#             ...  # 一直嵌套
#     else:
#         print(i)


def func(data):
    # if type(data) == list:
    if isinstance(data, list):
        for i in data:  # 是列表,则更深一层
            func(i)
    else:
        print(data)  # 不是列表,打印


func(list_data)

 

python中的高阶函数

 

 

3.高阶函数

# 高阶函数 函数里面调用另一个函数
# reduce 减
from functools import reduce  # from 从什么地方 import 导入什么东西

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

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


# 2+4+6=12


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


print(reduce(aa, list3))  # 12

python中的高阶函数

 

 

# map 映射
# map自带for循环
# map(一个函数名, 一个数据)
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(map(lambda i: str(i), list1))  # 生成器对象
print(list(map(lambda i: str(i), list1)))  # 强转为list


def int_to_list(data):
    return str(data)


print(list(map(int_to_list, list1)))  # 注意这里int_to_str只写了函数名,不是函数调用

python中的高阶函数

 

 

 

今日作业

# 5!
# 5的阶乘
def func(data):
    # print(data)
    if data == 1:  # 出口
        return 1
    return data*func(data-1)


print(func(5))

python中的高阶函数

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的高阶函数 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • python中的for循环

    1.range # 1.range(起始值,结束值,步长) # 范围 区间 # 步长不写时默认是1 # 当里面只有一个数据的时候,默认是0-结束值 # 当里面有两个数据的时候,是 起始值-结束值 print(‘1.range()’) print(range(5, 9, 1)) print(type(range(9)))       2. for循环 # 2.…

    2023年4月2日
    00
  • python函数进阶

    # 1.函数的作用域 # 全局变量的作用域: # 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。 # 全局变量所有作用域都可用,局部变量只能在本函数可用,变 # 量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量 # # global关键字: # 为了解决函数内使用全局变量的问题, # python增加了gl…

    2023年4月2日
    00
  • python中的函数进阶

    1.局部变量和全局变量 在函数外定义的不可变数据类型,在函数里面是可读不可写在函数外定义的可变数据类型,在函数里面可读可操作不可修改不可变类型传入函数,进行的操作不会影响到外面的变量但是当我们声明一个变量为全局变量后,进行的操作会影响到函数外的变量 可变数据类型,传入和直接使用都会改变原本的数据不可变数据类型 直接使用是可读不可写的 传入后的操作不会对函数外…

    2023年4月2日
    00
  • python中的列表和元组

    # 1.列表的格式 # [数据1,数据2,数据3,···] # 列表 可变数据类型 # 列表可以存储多个数据,数据之间的逗号以英文逗号分隔 # 列表可以存储不同类型数据,但一般存储同一数据类型,这样便于操作 # list_name = [] # 定义了一个空的列表 # 定义了一个有数据的列表 # 可以去索引和切片 print(‘1.列表的格式’) list_…

    2023年4月2日
    00
  • python中的字典和集合

    1.字典 # 基础数据类型 # bool int float str list tuple dict set # list dict set 可变数据类型 # bool int float str tuple 不可变数据类型 # 1.字典 dict # dict_data={key: value, key1: value1} # 1,符号以大括号表示 # 2…

    2023年4月2日
    00
  • python中的公共操作和推导式

    # 1.公共操作 # del 删除 删除变量或指定容器内数据 变量,容器里面的值 # + 将两个相同类型序列进行连接 字符串,列表,元组 print(‘1.公共操作’) print(‘a’ + ‘b’) print([‘a’] + [‘b’]) print((‘a’,)+(‘b’,)) # 元组,要有, # print({1:2}+{2:3}) # 字典不行…

    2023年4月2日
    00
  • python中的字典和集合

    # 1.字典 存储数据 存储一个数据的属性 可以快速进行查找 # dict_data = {key:value,key:value,…} # key是键 # value是值 # 以大括号表示 # 数据是以键值对出现的 键值对中间用冒号连接 # key的值必须是不可变类型 # 字典和列表和集合是可变类型 print(‘1.字典’) dict_data = …

    2023年4月2日
    00
  • python中的文件操作

    起初data.txt文件是这样的 # 一直打开文件但却不关闭文件会导致内存溢出 # 在python,使用open函数, # 可以打开一个已经存在的文件,或者创建一个新文件, # 语法如下: open(name, mode) # name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 # mode: 设置打开文件的模式(访问模式):只读、写入…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部