当前位置:首页 > 科技  > 软件

Python 十个高阶函数

来源: 责编: 时间:2024-07-18 16:54:27 61观看
导读高阶函数,顾名思义,是那些可以接收函数作为参数,或是返回函数作为结果的函数。它们让你的代码更加灵活、简洁,同时也提升了代码的复用性。接下来,我们将通过一系列的实例来深入理解高阶函数的魅力。让我们开始吧!实例一:map

高阶函数,顾名思义,是那些可以接收函数作为参数,或是返回函数作为结果的函数。它们让你的代码更加灵活、简洁,同时也提升了代码的复用性。3vr28资讯网——每日最新资讯28at.com

3vr28资讯网——每日最新资讯28at.com

接下来,我们将通过一系列的实例来深入理解高阶函数的魅力。让我们开始吧!3vr28资讯网——每日最新资讯28at.com

实例一:map 函数的应用

map 函数接收一个函数和一个序列,将函数应用于序列中的每一项,返回一个迭代器。例如,如果我们想要将一个列表中的所有数字平方,我们可以这样做:3vr28资讯网——每日最新资讯28at.com

numbers = [1, 2, 3, 4, 5]squared = map(lambda x: x**2, numbers)print(list(squared))  # 输出:[1, 4, 9, 16, 25]

实例二:filter 函数的魔法3vr28资讯网——每日最新资讯28at.com

filter 函数同样接收一个函数和一个序列,但它会过滤出序列中满足条件的元素。比如,筛选出列表中大于10的数:3vr28资讯网——每日最新资讯28at.com

numbers = [5, 11, 15, 2, 8]filtered = filter(lambda x: x > 10, numbers)print(list(filtered))  # 输出:[11, 15]

实例三:reduce 函数的力量

reduce 函数需要从functools模块中导入,它将一个数据集中的所有数据进行累积操作。假设我们要计算一个列表中所有数的乘积:3vr28资讯网——每日最新资讯28at.com

from functools import reducenumbers = [1, 2, 3, 4, 5]product = reduce(lambda x, y: x * y, numbers)print(product)  # 输出:120

实例四:函数作为参数

我们可以通过定义一个函数,使其能够接受其他函数作为参数,从而实现更高级的抽象和代码复用。比如,编写一个函数apply_function,它可以接收一个函数和一个参数,然后应用这个函数:3vr28资讯网——每日最新资讯28at.com

def apply_function(func, arg):    return func(arg)def square(x):    return x * xprint(apply_function(square, 5))  # 输出:25

实例五:装饰器的优雅

装饰器是Python中一个非常强大的高阶函数概念,它们可以修改或增强现有函数的行为。比如,我们创建一个简单的装饰器,用于记录函数调用:3vr28资讯网——每日最新资讯28at.com

def log_decorator(func):    def wrapper(*args, **kwargs):        print(f"Calling {func.__name__}")        return func(*args, **kwargs)    return wrapper@log_decoratordef greet(name):    return f"Hello, {name}"print(greet("Alice"))  # 输出:Calling greet                        #       Hello, Alice

实例六:sorted 函数与自定义排序3vr28资讯网——每日最新资讯28at.com

sorted 函数允许你传递一个key参数来指定如何比较元素。这使得排序变得非常灵活。例如,如果我们有一个包含字典的列表,我们可以按照某个键的值来排序:3vr28资讯网——每日最新资讯28at.com

people = [    {'name': 'Alice', 'age': 25},    {'name': 'Bob', 'age': 22},    {'name': 'Charlie', 'age': 30}]sorted_people = sorted(people, key=lambda person: person['age'])for person in sorted_people:    print(person)

这将按年龄从小到大排序。3vr28资讯网——每日最新资讯28at.com

实例七:使用itertools模块

Python的itertools模块提供了很多高阶函数,可以处理迭代器的创建和操作。例如,chain函数可以将多个迭代器链接在一起:3vr28资讯网——每日最新资讯28at.com

import itertoolslist1 = [1, 2, 3]list2 = [4, 5, 6]chained = itertools.chain(list1, list2)print(list(chained))  # 输出:[1, 2, 3, 4, 5, 6]

实例八:functools.partial函数

functools.partial允许你冻结函数的部分参数,创建一个新的函数。这对于需要固定某些参数值的情况非常有用:3vr28资讯网——每日最新资讯28at.com

from functools import partialdef power(base, exponent):    return base ** exponentsquare = partial(power, expnotallow=2)cube = partial(power, expnotallow=3)print(square(5))  # 输出:25print(cube(5))    # 输出:125

实例九:zip函数的多用途

zip函数可以将多个序列打包成一个元组的列表。当你需要同时遍历多个序列时,这非常有用。例如,合并两个列表的元素:3vr28资讯网——每日最新资讯28at.com

names = ['Alice', 'Bob', 'Charlie']ages = [25, 22, 30]combined = zip(names, ages)for name, age in combined:    print(f"{name} is {age} years old")

实例十:any和all函数的逻辑判断

any和all函数分别用来检查序列中是否至少有一个元素满足条件,以及所有元素是否都满足条件。例如,检查一个列表中是否有偶数:3vr28资讯网——每日最新资讯28at.com

numbers = [1, 3, 5, 7, 8]has_even = any(number % 2 == 0 for number in numbers)print(has_even)  # 输出:Trueall_odd = all(number % 2 != 0 for number in numbers)print(all_odd)   # 输出:False

这些高阶函数的例子展示了Python语言的强大和灵活性。它们不仅让代码更加紧凑,还提高了代码的可读性和可维护性。希望这些示例能够帮助你更好地理解和运用高阶函数!3vr28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-101700-0.htmlPython 十个高阶函数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: DDD领域驱动设计的四重边界,你知道吗?

下一篇: 火山引擎 RTC 实时媒体处理平台的技术实践

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    一、前言和介绍专为家庭请假懒人而生的石头科技在近日又带来了自己的全新旗舰新品,石头智能洗地机A10 Plus。从这个产品名上就不难看出,这次石头推出的并不是常见的扫地机器
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 质感不错!OPPO K11渲染图曝光:旗舰IMX890传感器首次下放

    质感不错!OPPO K11渲染图曝光:旗舰IMX890传感器首次下放

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
  • 微软发布Windows 11新版 引入全新任务栏状态

    微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • “买真退假” 这种“羊毛”不能薅

    “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top
Baidu
map