首页 > 编程语言 >这 3个Python 函数你知道吗?

这 3个Python 函数你知道吗?

时间:2023-06-09 22:45:48浏览次数:54  
标签:返回 map 函数 Python reduce filter 数组 知道

动动发财的小手,点个赞吧!

作为21世纪最流行的语言之一,Python当然有很多有趣的功能值得深入探索和研究。今天将介绍其中的三个,每个都从理论上和通过实际示例进行介绍。

我想要介绍这些函数的主要原因是它们可以帮助您避免编写循环。在某些情况下,循环的运行成本可能很高,除此之外,这些函数将有助于提高速度。

以下是本文将涵盖的功能:

  1. map()
  2. filter()
  3. reduce()

即使您以前听说过这些功能,通过更多的理论和示例来加强您的知识也没有什么坏处。

因此,事不宜迟,让我们开始吧!

map

map() 函数接受另一个函数作为参数,以及某种数组。这个想法是将一个函数(作为参数传入的函数)应用于数组中的每个项目。

这派上用场有两个原因:

  1. 你不必写一个循环
  2. 它比循环更快

让我们看看它的实际效果。我将声明一个名为 num_func() 的函数,它将一个数字作为参数。该数字被平方并除以 2 并原样返回。请注意,操作是任意选择的,您可以在函数内做任何您想做的事情:

现在让我们声明一个数字数组,我们要在其上应用 num_func()。请注意 map() 本身将返回一个地图对象,因此您需要将其转换为列表:

似乎该过程已成功完成。这里没有什么开创性的,但尽可能避免循环是一件好事。

filter

这是另一个可以节省您时间的不错的函数——无论是在编写还是在执行上。顾名思义,这个想法是只将满足特定条件的项目保留在数组中。

就像 map() 一样,我们可以预先声明函数,然后将它与可迭代列表一起传递给 filter()。

让我们看看这个在行动中。我已经声明了一个名为 more_than_15() 的函数,顾名思义,如果作为参数给出的项目大于 15,它将返回 True:

接下来,我们声明一个数字数组并将它们作为第二个参数传递给 filter() 函数:

正如预期的那样,只有三个值满足给定条件。再一次,这里没有什么开创性的,但看起来比循环好得多。

reduce

现在 reduce() 与前两个有点不同。首先,我们必须从 functools 模块中导入它。这背后的主要思想是它将给定的函数应用于项目数组并返回单个值作为结果。

最后一部分很关键——reduce() 不会返回一个项目数组,它总是返回一个值。让我们看一张图来具体说明这个概念。

这是在案例图不是 100% 清楚的情况下写出的逻辑:

  1. 5 加到 10,结果是 15
  2. 15 加 12,结果是 27
  3. 27 加 18,结果是 45
  4. 45 加到 25,结果是 70

70 是返回的值。从代码实现开始,让我们从 functools 模块导入 reduce 函数并声明一个返回两个数字之和的函数:

现在我们可以重新访问代码中的图表,并验证一切是否正常工作:

暂时不要进入评论部分——我完全知道还有其他方法可以对列表中的项目求和。这只是展示该功能如何工作的最简单示例。

本文由mdnice多平台发布

标签:返回,map,函数,Python,reduce,filter,数组,知道
From: https://www.cnblogs.com/swindler/p/17470403.html

相关文章

  • 用python获取文件夹中文件的路径,基础路径,后缀,复制文件等。
    #读取文件夹中文件的路径#方法一importosimportshutilwenjianjia=r'D:\Desktop\内部培训python'#文件夹绝对路径#r的作用是去除转义字符lujing=os.listdir(wenjianjia)#获取文件夹中所有文件的相对路径返回一个列表forlujing_listinlujing......
  • python 数据可视化———电子商务销售分析
    一、选题背景随着互联网和移动互联网技术的不断发展,电子商务已经成为了一个全球性的发展趋势。越来越多的商家和消费者都开始使用电子商务平台进行线上交易,这在一定程度上改变了传统商业模式,并且对于消费者而言,电子商务平台也提供了更为便捷的购物体验。因此,对于电子商务销售的分......
  • Python递归法计算棋盘上所有路径总奖品最大值(京东2016编程题)
    问题描述:假设有一个6x6的棋盘,每个格子里有一个奖品(每个奖品的价值在100到1000之间),现在要求从左上角开始到右下角结束,每次只能往右或往下走一个格子,所经过的格子里的奖品归自己所有。问最多能收集价值多少的奖品。思路:每个格子所在路径的总奖品最大值依赖于左边的格子或右边的格子。......
  • Python寻找给定序列中相差最小的两个数字
    importrandomdefgetTwoClosestElements(seq):#先进行排序,使得相邻元素最接近#相差最小的元素必然相邻seq=sorted(seq)#无穷大dif=float('inf')#遍历所有元素,两两比较,比较相邻元素的差值#使用选择法寻找相差最小的两个元素fori,vi......
  • Python使用tkinter的Treeview组件实现表格功能
    fromtkinterimportTk,Scrollbar,Framefromtkinter.ttkimportTreeview#创建tkinter应用程序窗口root=Tk()#设置窗口大小和位置root.geometry('500x300+400+300')#不允许改变窗口大小root.resizable(False,False)#设置窗口标题root.title('通信录管理系统')#使......
  • Python调用安卓手机相机接口进行拍照
    感兴趣的朋友可以查阅sl4a模块的详细资料,实现更多功能。下面的代码需要在安卓手机上安装QPython3,然后打开QEdit,把代码复制粘贴过去,保存文件,然后运行就可以自动打开相机了。importsl4aimportosdroid=sl4a.Android()#默认保存到手机存储卡的根目录下,也可以自己修改成其他目录......
  • Python把列表中的数字尽量等分成n份
    问题描述:假设一个列表中含有若干整数,现在要求将其分成n个子列表,并使得各个子列表中的整数之和尽可能接近。下面的代码并没有使用算法,而是直接将原始列表分成n个子列表,然后再不断地调整各个子列表中的数字,从元素之和最大的子列表中拿出最小的元素放到元素之核最小的子列表中,重复这个......
  • Python中enumerate对象的用法与特点
    Python的内置函数enumerate()函数用来枚举可迭代对象中的元素,返回可迭代的enumerate对象,其中每个元素都是包含索引和值的元组。#枚举字符串中的元素>>>list(enumerate('abcd'))[(0,'a'),(1,'b'),(2,'c'),(3,'d')]#枚举列表中的元素>>>list(enumerate([�......
  • Python从命令行参数和配置文件获取信息
    实际开发中,很多时候需要从外部获取数据,根据用户的输入或配置信息来决定下一步应采取的行为。除了使用内置函数input()或者GUI库的控件和对话框来接收用户输入以外,还可以使用sys和argparse模块来接收命令行参数,使用configparser模块从外部配置文件中获取信息。sys模块的argv是一个包......
  • Python查找任意字符串中只出现一次的字符(2016奇虎笔试题)
    '''  程序功能:  编写函数,给定任意字符串,找出其中只出现一次的字符,  如果有多个这样的字符,就全部找出。'''importsysdefsearchOne(s):#创建空字典d=dict()#遍历字符串,并分别记录每个字符的出现次数forchins:#这里重点演示字典的ge......