首页 > 编程语言 >python-16-常见高级函数

python-16-常见高级函数

时间:2024-11-04 14:47:10浏览次数:6  
标签:函数 迭代 16 python reduce numbers print result

python-16-常见高级函数

一.说明

python中的基础系列中的关于函数部分,还有一些特殊函数叫高级函数,在真实项目中开发使用频率较高,说句人话,就是真香 实用!。

二.定义

在Python中,高阶函数是指接受其他函数作为参数或返回一个函数的函数。高阶函数使得我们能够以更灵活和简洁的方式处理函数。

三.说明

  1. map()

    map() 函数用于将指定函数应用于给定可迭代对象(如列表、元组等)的每个元素,并返回一个迭代器;

    # 定义一个函数,计算平方
    def square(x):
        return x ** 2
    
    numbers = [1, 2, 3, 4, 5]
    squared_numbers = map(square, numbers)
    
    # 将迭代器转换为列表
    print(list(squared_numbers))  # 输出: [1, 4, 9, 16, 25]
    
  2. filter()

    filter() 函数用于筛选可迭代对象中的元素,返回符合条件的元素;

    # 定义一个函数,检查是否为偶数
    def is_even(x):
        return x % 2 == 0
    
    numbers = [1, 2, 3, 4, 5, 6]
    even_numbers = filter(is_even, numbers)
    
    # 将迭代器转换为列表
    print(list(even_numbers))  # 输出: [2, 4, 6]
    
  3. reduce()

    reduce() 函数来自 functools 模块,用于对可迭代对象的元素进行累积操作;

    1.基本语法

    from functools import reduce
    
    result = reduce(function, iterable[, initializer])
    

    function:一个接收两个参数的函数,用于对元素进行处理。

    iterable:一个可迭代对象(如列表、元组等),其元素将会被 function 处理。

    initializer(可选):用于指定初始值。如果提供,累积的开始值将是这个值。

    2.工作原理

    reduce() 会对 iterable 中的元素进行如下操作:

    1. 先取出前两个元素,将其传入 function
    2. function 的返回值与下一个元素一起传入 function
    3. 重复这个过程,直到所有元素都被处理完,最终返回的结果就是累积值。

    示例:

    1. 计算和

      from functools import reduce
      
      # 定义一个函数,计算两个数的和
      def add(x, y):
          return x + y
      
      numbers = [1, 2, 3, 4, 5]
      result = reduce(add, numbers)
      
      print(result)  # 输出: 15 (1 + 2 + 3 + 4 + 5)
      
    2. 计算乘积

      from functools import reduce
      
      # 定义一个函数,计算两个数的乘积
      def multiply(x, y):
          return x * y
      
      numbers = [1, 2, 3, 4]
      result = reduce(multiply, numbers)
      
      print(result)  # 输出: 24 (1 * 2 * 3 * 4)
      
    3. 使用 initializer

      如果提供 initializer,它会作为初始值参与计算。例如,计算和时从 10 开始:

      from functools import reduce
      
      numbers = [1, 2, 3]
      result = reduce(add, numbers, 10)
      
      print(result)  # 输出: 16 (10 + 1 + 2 + 3)
      
    4. 使用 Lambda 表达式

      from functools import reduce
      
      # 使用 lambda 表达式计算和
      result = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
      print(result)  # 输出: 15
      
      # 使用 lambda 表达式计算乘积
      result = reduce(lambda x, y: x * y, [1, 2, 3, 4])
      print(result)  # 输出: 24
      
  4. sorted()

    sorted() 函数用于对可迭代对象进行排序,可以接受一个排序函数作为参数

    注意sorted() 函数并不会改变原可迭代对象,而是返回一个新的可迭代对象

    def sort_by_length(s):
        return s["quantity"]
    
    words = [{'name':"apple",'quantity':10},
             {'name':"banana",'quantity':25}, 
             {'name':"cherry",'quantity':8}, 
             {'name':"date",'quantity':16}]
    sorted_words = sorted(words, key=sort_by_length)
    
    print(sorted_words)  
    '''
    输出: [
     {'name': 'cherry', 'quantity': 8},
     {'name': 'apple', 'quantity': 10}, 
     {'name': 'date', 'quantity': 16}, 
     {'name': 'banana', 'quantity': 25}
     ]
    '''
    
    
    # 定义一个函数,按照字符串长度排序
    def sort_by_length(s):
        return len(s)
    
    words = ["apple", "banana", "cherry", "date"]
    sorted_words = sorted(words, key=sort_by_length)
    
    print(sorted_words)  # 输出: ['date', 'apple', 'banana', 'cherry']
    
    
  5. any()和all()

    • any():any()函数返回 True,如果可迭代对象中至少有一个元素为真(即不为 FalseNone0、空字符串或空容器),否则返回 False

    • all():all()函数返回 True,如果可迭代对象中的所有元素都是“真”的(即每个元素都不为 FalseNone0、空字符串或空容器),否则返回 False

    • 语法

      any(iterable)
      all(iterable)
      # iterable:一个可迭代对象,其中的元素会被检查。
      
    • 示例

      注意为什么使用map,就是通过map 对可迭代元素进行处理使其返回 true、false的列表

      numbers = [1, 2, 3, 4, 5]
      
      # 检查是否有偶数
      has_even = any(map(lambda x: x % 2 == 0, numbers))
      print(has_even)  # 输出: True
      
      # 检查是否所有数都是正数
      all_positive = all(map(lambda x: x > 0, numbers))
      print(all_positive)  # 输出: True
      
  6. zip()

    zip() 函数用于将多个可迭代对象打包成一个元组的迭代器,常用于并行迭代。

names = ["Alice", "Bob", "Charlie"]
 ages = [25, 30, 35]
 
 # 使用 zip() 组合两个列表
 combined = zip(names, ages)
 
 # 转换为列表并打印
 print(list(combined))  # 输出: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

四.总结

常用的高级函数我就介绍到这里,这些高级函数,在大多数编程语言中都有类似,有其他语言开发经验应该都知道怎么使用!确实使用频率比较高!大家还要多多复习!

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

标签:函数,迭代,16,python,reduce,numbers,print,result
From: https://blog.csdn.net/Lookontime/article/details/143468561

相关文章

  • AbMole|RS 504393(CAS号300816-15-3)
    RS504393是一种高度选择性的CCR2趋化因子受体拮抗剂,作用于人重组CCR2和CCR1受体,IC50值分别为89nM和>100μM。RS504393抑制MCP-1诱导的趋化性,IC50为330nM。RS504393处理显著抑制过敏原诱导的β-己糖胺酶释放。生物活性RS504393是一种高度选择性的CCR2......
  • 15个Python数据分析实用技巧(非常详细)零基础入门到精通,收藏这一篇就够了
    无论你是刚踏入数据分析大门的新手,还是希望深化技能的老手,这篇文章都将是你旅程中的良师益友。我们将一起探索十个实用的Python数据分析技巧,让你的数据处理能力飞速提升。1.导入数据:Pandas是你的好朋友技巧说明:Pandas库是数据分析的基础,它让数据导入变得轻松。实践示......
  • Python(logging.getLogger())
    目录1.基本功能2.日志记录器的层次结构3.示例代码4.典型用法5.重要特性6.其他相关函数logging.getLogger()是Python的logging模块中的一个函数,主要用于创建或获取一个日志记录器(logger)对象。logging模块是Python标准库中的一部分,旨在提供灵活的日志记录功能,用于......
  • python 自动化 excel数据筛选后发送outlook邮件
    importpandasaspdfromdatetimeimportdatetime,timedeltaimportwin32com.clientaswin32importos#导入os模块用于文件删除importglobimportopenpyxl#导入openpyxl模块用于单元格合并和格式化#定义文件路径和工作表名称及起始行file_path='要筛选的ex......
  • 基于springboot的CRM客户关系管理系统-计算机毕业设计源码316631
    摘要本论文主要论述了如何使用Java语言开发一个CRM客户关系管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,Springboot框架进行开发。在引言中,作者将论述CRM客户关系管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各......
  • 总结---20个工作中一定会用到的python实用小脚本
    一、文件批量重命名功能:将指定文件夹下的所有文件按照一定规则进行重命名。使用方法:importos​defbatch_rename(folder_path,prefix):  files=os.listdir(folder_path)  forindex,file_nameinenumerate(files):    old_file_path=os.path.j......
  • PHP图书馆借阅管理系统-计算机毕业设计源码01649
    基于HTML5+CSS的图书馆借阅管理系统的设计与实现摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。本文旨在设计和实现基于SSM框架和HTML技术的图书......
  • (3)读<Bayesian Analysis with Python 3rd>Python上的贝叶斯分析,一次概率建模的实践指导。
    在我们开启第二章之前,先去回顾一下第一章的主要内容我们从对统计建模,概率、条件概率、随机变量以及概率分布的讨论,延申至贝叶斯理论的知识。我们紧接着用一个硬币的问题来介绍基础的贝叶斯模型和数据分析。我们用经典的骰子例子介绍贝叶斯统计中概率分布以及不确定性。我们尝......
  • Python—深浅拷贝(copy)
    1、浅拷贝(copy.copy)定义:浅拷贝创建(复制)一个新对象,该对象与原对象具有相同的值,但对可变类型字段只会复制引用地址,而不复制实际的对象。这意味着原对象和新对象的引用类型属性指向同一块内存。拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容特点:不可变数......