python中的高阶函数

yizhihongxing

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+b


print(func0(1, 2))

func00 = lambda a, b: a + b
print(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)

python中的高阶函数

 

 

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中的每个数据+1
print(list2)

python中的高阶函数

 

 

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

python中的高阶函数

 

 

 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)))  # 选出偶数

python中的高阶函数

 

 

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+1
print()
# 将列表中的每个数据输出 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)

python中的高阶函数

 

 

# 今日作业
"""
用递归求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))

python中的高阶函数

 

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

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

相关文章

  • python中的字典和集合

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

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

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

    2023年4月2日
    00
  • python中的面向对象

    # 面向对象是非常重要的! # 抽象,是个思想,结构 # 小明 小红 小雨 都是人 # 海尔洗衣机 海东洗衣机 海西洗衣机 都是洗衣机 # 猫 狗 熊猫 都是动物 # 蓝图 # # class WashingMachine: # 类名一般是大驼峰 # pass # # 特征是属性 # age = 20 # # 行为是方法 # def # 先有类,后有对象 #…

    2023年4月2日
    00
  • python实现学员管理系统

    “”” 1.学员管理系统 系统功能界面 1-添加学员 2-删除学员 3-修改学员信息 4-查询学员信息 5-退出系统 6-显示全部学员信息 “”” # 打印要操作的信息 # 使用数字表示使用的功能 # 输入对应的数字,表示要操作的功能 # 1:增加学员信息 2:删除学员信息 # 3:修改学员信息 4:查看学员信息 5:退出系统 # 存储数据 # str nu…

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

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

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

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

    2023年4月2日
    00
  • python实现简单的商品数据管理系统

    # 一个商品 名称 价格 库存 总销量 # 存放商品的数据类型 str set list tuple dict # 综合考虑,选择字典 dict_data = {} # {名称: {price: 价格, inventory: 库存, sales: 总销量}} def exist_goods(goods_name): # 有无keys都行应该是 “””判断商品…

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

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

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