首页 > 编程语言 >python 内置函数map()、filter()函数

python 内置函数map()、filter()函数

时间:2023-05-04 13:22:42浏览次数:36  
标签:map 函数 迭代 python 列表 filter lst

map() 函数接受两个参数:第一个参数是一个函数,第二个参数是一个可迭代对象(如列表、元组等)。该函数会将可迭代对象中的每个元素依次传递给第一个参数指定的函数,并返回一个新的可迭代对象,其中每个元素都是原始对象经过该函数转换后的结果。具体来说,map() 函数会将可迭代对象中的每个元素应用到指定函数上,并将处理结果放入新的可迭代对象中返回。

举个例子,假设有以下代码:

def square(x):
    return x ** 2

lst = [1, 2, 3, 4]
squared_lst = list(map(square, lst))
print(squared_lst)

这里定义了一个名为 square 的函数,用于计算一个数的平方。然后创建了一个包含多个整数的列表 lst。最后使用 map() 函数将 square 函数应用到 lst 列表中的每个元素上,并得到一个新的列表 squared_lst,其中每个元素都是原始列表中的元素经过 square 函数计算后的结果。程序输出结果为 [1, 4, 9, 16]

filter() 函数也接受两个参数:第一个参数是一个函数,第二个参数是一个可迭代对象。该函数会将可迭代对象中的每个元素依次传递给第一个参数指定的函数,并返回一个新的可迭代对象,其中只包含原始对象中满足指定条件的元素。具体来说,filter() 函数会根据指定函数的返回值(必须是布尔值)来判断是否保留该元素。

举个例子,假设有以下代码:

def is_even(x):
    return x % 2 == 0

lst = [1, 2, 3, 4]
even_lst = list(filter(is_even, lst))
print(even_lst)

这里定义了一个名为 is_even 的函数,用于判断一个数是否为偶数。然后创建了一个包含多个整数的列表 lst。最后使用 filter() 函数将 is_even 函数应用到 lst 列表中的每个元素上,并得到一个新的列表 even_lst,其中只包含原始列表中的偶数元素。程序输出结果为 [2, 4]

map()filter() 函数在 Python 中都是用于对数据进行转换和筛选的内置函数。它们的区别在于:

  • map() 函数将一个可迭代对象中的每个元素都应用到一个指定的函数上,并返回一个新的可迭代对象,其中每个元素都是原始对象经过该函数转换后的结果。
  • filter() 函数将一个可迭代对象中的每个元素都应用到一个指定的函数上,并返回一个新的可迭代对象,其中只包含原始对象中满足指定条件的元素。

具体来说,map() 函数会将可迭代对象中的每个元素依次传递给指定函数,并将处理结果放入新的可迭代对象中返回。而 filter() 函数则根据指定函数的返回值(必须是布尔值)来判断是否保留该元素,最终得到符合条件的元素列表。

因此,map() 函数通常用于对数据进行转换,例如对列表中的每个数求平方、对字符串中的每个单词进行大写等,而 filter() 函数则通常用于筛选数据,例如从列表中筛选出所有偶数、从字符串列表中筛选出长度大于 5 的字符串等。

举个例子,假设有以下代码:

def square(x):
    return x ** 2

lst = [1, 2, 3, 4]
squared_lst = list(map(square, lst))
print(squared_lst)

def is_even(x):
    return x % 2 == 0

even_lst = list(filter(is_even, lst))
print(even_lst)

在这个例子中,我们使用 map() 函数计算了一个列表中所有元素的平方,并使用 filter() 函数从该列表中筛选出所有偶数元素。输出结果分别为 [1, 4, 9, 16][2, 4]

此外,需要注意的是,map()filter() 函数都返回迭代器对象。如果需要得到列表对象,可以将其转换为列表对象。

例如,我们可以使用以下代码将 map()filter() 返回的迭代器对象分别转换为列表对象:

lst = [1, 2, 3, 4]
squared_lst = list(map(lambda x: x ** 2, lst))   # 使用 lambda 表达式代替函数
even_lst = list(filter(lambda x: x % 2 == 0, lst))
print(squared_lst)   # 输出 [1, 4, 9, 16]
print(even_lst)      # 输出 [2, 4]

在这个例子中,我们使用了 lambda 表达式来替代之前定义的函数,并将返回的迭代器对象转换为列表对象。

需要注意的是,map()filter() 函数都可以与其他 Python 内置函数(如 reduce()zip() 等)配合使用,以实现更强大的功能。

例如,我们可以使用以下代码将 map()filter()reduce() 函数结合起来,计算一个列表中所有偶数元素的平方和:

from functools import reduce   # 导入 reduce 函数

lst = [1, 2, 3, 4]
even_squared_sum = reduce(lambda x, y: x + y, map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, lst)))
print(even_squared_sum)   # 输出 20

在这个例子中,我们首先使用 filter() 函数筛选出列表中的所有偶数元素,然后使用 map() 函数计算每个偶数元素的平方,并使用 reduce() 函数将所有平方值相加。最终得到了所有偶数元素的平方和,结果为 20

总的来说,map()filter() 函数都是非常有用的 Python 内置函数,它们可以大大简化对数据的转换和筛选操作。

 

标签:map,函数,迭代,python,列表,filter,lst
From: https://www.cnblogs.com/yund/p/17370937.html

相关文章

  • python 函数
    在Python中,函数是一段代码块,用于完成特定的任务。函数通常接受一个或多个参数,并返回一个结果。根据函数的定义方式和参数类型,可以将Python函数分为以下几类:内置函数:Python内置了很多常用的函数,如 print()、len()、int() 等。自定义函数:使用 def 关键字可以自定义函数......
  • python 匿名函数(lambda函数)
    Python中的匿名函数是指没有命名标识符的函数,通常被称为lambda函数。与普通函数不同,它们是一种更加简洁的方式来编写小型临时函数。在Python中,匿名函数使用关键字lambda来定义,其语法如下:lambdaarguments:expression其中,arguments表示函数参数,可以是一个或多个,多个参数之间用......
  • C++ STL map 【避坑】 中括号查找(map[.])导致超时
    感谢大神的博客:STLmap关于查找的坑——尽量不使用方括号[]查找_stlmap查找_sdudyl的博客-CSDN博客今天在CF补了一道题,我开了map使用中括号查找,结果第二组就T了。我百思不得其解,最后把map[x]换成map.count(x)就过了。因为这样使用中括号查找x时,如果找不到x,会向容器中插入一......
  • python+playwright 学习-24 判断页面元素状态的几种方式
    前言在操作元素之前,可以先判断元素的状态。判断元素操作状态也可以用于断言。常用的元素判断方法page对象调用的判断方法,传一个selector定位参数page.is_checked(selector:str)#checkboxorradio是否选中page.is_disabled(selector:str)#元素是否可以点击或编辑page.i......
  • 【Python】orm 按日期分类
    1.Trunc#获取每个月count总数fromdjango.db.modelsimportSumfromdjango.db.models.functionsimportTruncmodels.NafpComplete.objects.filter().annotate(month=Trunc('point_time','month')).values('month').annotate(count=Sum('......
  • 【访问者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介访问者模式(VisitorPattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问......
  • Python网络爬虫原理及实践 | 京东云技术团队
    作者:京东物流田禹1网络爬虫网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术。2Scrapy框架(Python)2.1.Scrapy架构2.1.1.系统架构2.1.2.执行流程总结爬虫开发过程,简化爬虫执行流程如下图......
  • Bootstrap + Django - 前端bootstrap-table列表数据使用回调函数控制显示某一列数据
    前端bootstrap-table列表数据使用回调函数控制显示某一列数据1.效果1.有可以操作用户的权限,显示操作列2.无操作用户的权限,不显示操作列2.主要代码1.前端js<script>var$articlesTable=$('#table').bootstrapTable('destroy').bootstrapTable({url:'/team......
  • python pandas 生成excle
    首先需要导包需要两个包分别是pandas和openpyxlpipinstall-i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pandaspipinstallopenpyxl 创建Python开始写入#使用pandas生成xlsx的excel文件importpandasaspdimportpandasaspddata=......
  • python+playwright 学习-60 在打开的多个标签页窗口灵活切换
    前言当页面打开了多个标签页后,如何切换到自己需要的标签页上呢?使用场景以百度首页为例,当打开多个标签页后,如何切换到自己想要的页面上操作。通过context.pages可以获取到所有的page对象,每一个page对象就代表一个标签页实例fromplaywright.sync_apiimportsync_playwrigh......