首页 > 编程语言 >python中的高阶函数

python中的高阶函数

时间:2022-12-12 23:13:50浏览次数:37  
标签:return 函数 python data list func print 高阶

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

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

 

 

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)

 

 

# 无规律循环(非线性循环)
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)

 

 

 

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

 

 

# 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只写了函数名,不是函数调用

 

 

 

今日作业

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


print(func(5))

 

标签:return,函数,python,data,list,func,print,高阶
From: https://www.cnblogs.com/qc2012/p/16977383.html

相关文章

  • python单线程+异步协程简单使用
    高性能异步爬虫:异步爬虫的方式:3、单线程+异步协程(推荐)event_loop:事件循环,相当于一个无限循环,可以把一些函数注册到这个事件循环上,当满足某些条件的时候,函数就会被循环执行......
  • 学习python-flask02
    请求与响应请求对象'''这个request是全局的请求对象。它在哪个视图函数中就是当前视图函数中的request对象并不会乱。'''defindex():print(request.method) #......
  • this和箭头函数的this
    https://www.cnblogs.com/lfri/p/11872696.htmlhttps://www.ruanyifeng.com/blog/2018/06/javascript-this.html......
  • 拓端数据tecdat|python代写安娜卡列妮娜词云图制作
    知识点普及 词频:某个词在该文档中出现的次数停用词:数据处理时过滤掉某些字或词,如:网站、的等语料库:也就是我们要分析的所有文档的集合中文分词:将汉字序列分成一个个单独的词......
  • python之路47 django路由配置
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''form......
  • 进入python的世界_day50_Django之路由层——路由匹配、反向解析
    一、django请求生命周期流程图学习流程:​ 路由层、视图层、模板层、模型层、组件(插件、中间件)、BBS项目二、路由匹配1.path转换器#path('网址后缀',视图函数名)一旦......
  • Python Web开发一:Web开发简介
    PythonWeb开发一:Web开发简介​​一、背景知识​​​​二、前端开发和后端开发要做什么​​​​1.Web前端开发​​​​1.1html文件​​​​1.2CSS​​​​1.3资源文件​​......
  • 1行Python代码,合并100个Excel文件,原来这么方便?
    大家好,这里是程序员晚枫。今天开源项目​​python-office​​发布了一个新功能:1行代码,合并你指定的多个Excel文件。本文给大家详细介绍一下~需求说明有一位老师,现在有全校1......
  • 总结Python设置Excel单元格样式的一切,比官方文档还详细
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • python-miio 入门
    一、获取ip和tooken转载链接:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor二、基础通信转载链接:https://github.com/rytilahti/python-miio/iss......