Python3中map(),reduce(),filter()的详细用法

目录
  • 前言
  • 1.map()
  • 2.filter()
  • 3.reduce()

前言

Python3中的map()、reduce()、filter() 这3个一般是用于对序列进行操作的内置函数,它们经常需要与 匿名函数 lambda 联合起来使用,我们今天就来学习下。

1.map()

map() 可以用于在函数中对指定序列做映射,返回值是一个迭代器,其使用语法如下:

map(function, *iterables)

上面的第一个参数 function 指一个函数,第二个参数 iterable 指一个或多个可迭代对象,在执行过程中,会对可迭代对象中的每一个元素调用 function 函数做计算,最后得到一个新的迭代器对象,而这个新的迭代器对象,会包含有每次调用 function 函数的返回值。

只传入一个可迭代对象:

"""计算列表中每个元素的三次方"""
def demo_map(x):
    return x ** 3
nums = [1, 2, 3, 4, 5]
print(list(map(demo_map, nums)))  # 输出:[1, 8, 27, 64, 125]

# 使用匿名函数
print(list(map(lambda x: x ** 3, nums)))  # 输出:[1, 8, 27, 64, 125]

传入多个可迭代对象

"""计算3个列表中对应下标元素的和"""
def demo_map(x, y, z):
    return x + y + z
nums1 = [1, 2, 3, 4, 5]
nums2 = [11, 22, 33, 44, 55]
nums3 = [100, 200, 300, 400, 500]
print(list(map(demo_map, nums1, nums2, nums3)))  # 输出:[112, 224, 336, 448, 560]

# 使用匿名函数
print(list(map(lambda x, y, z: x + y + z, nums1, nums2, nums3)))  # 输出:[112, 224, 336, 448, 560]

2.filter()

filter() 可以用于过滤序列,过滤掉不符合条件的元素,返回值也是一个迭代器,其使用语法如下:

filter(function or None, iterable)

和 map() 函数类似,上面的第一个参数 function 指一个函数,第二个参数 iterable 指一个可迭代对象,执行后会得到一个包含每次调用 function 函数返回值的迭代器。

"""找出从 -5 到 5 中能被 4 整除的所有整数"""
def demo_filter(x):
    return x % 4 == 0
nums = range(-5, 6)
print(list(nums))  # 输出:[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
# 传入None,只返回true的值(0是False,所以被过滤掉了)
print(list(filter(None, nums)))  # 输入:[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5]
# 传入正常函数,过滤出 nums 中能被 4 整除的整数
print(list(filter(demo_filter, nums)))  # 输出:[-4, 0, 4]
# 使用匿名函数
print(list(filter(lambda x: x % 4 == 0, nums)))  # 输出:[-4, 0, 4]

针对 map() 和 filter() 函数, 这里有 2 点需要注意:

  • map 中必须传入一个正常函数,而在 filter 函数中则可以传正常函数或者None,当传入None时,只返回可迭代对象中所有符合 true 的值
  • map 中支持传多个可迭代对象,而在 filter 函数中则只能传一个可迭代对象

3.reduce()

reduce() 可以用于对参数序列中的元素进行累积,返回的是一个值。

在 Python3 中,reduce() 已被从全局名字空间里移除了,如果想要使用它,那么需通过引入 functools 模块来调用 reduce() 函数,

其使用语法如下:

from functools import reduce
reduce(function, sequence[, initial])

上面的第一个参数 function 指一个函数,并且该函数必须含有2个参数,第二个参数 sequence 指一个序列,第三个参数 initial 指初始值,默认是None。

例如存在函数:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]),它就相当于 ((((1+2)+3)+4)+5)。

from functools import reduce
def demo_reduce(x, y):
    return x + y
nums = range(1, 101)
print(reduce(demo_reduce, nums))  # 输出:5050
# 使用匿名函数
print(reduce(lambda x, y: x + y, nums))  # 输出:5050

# 设置初始值为 1000
print(reduce(lambda x, y: x + y, nums, 1000))  # 输出:6050

上面的 map()、reduce()、filter() 都是属于Python3中的高阶函数,它们最大的好处在于可以让代码更加简洁,当然,如果不使用它们,我们也可以通过其他方式来实现。

到此这篇关于Python3中map(),reduce(),filter()的详细用法的文章就介绍到这了,更多相关Python map(),reduce(),filter()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 内置函数-range()+zip()+sorted()+map()+reduce()+filter()

    目录 range函数 zip() 函数 其它内置函数 数据类型转换相关内置函数 变量相关函数 数学相关函数 进制相关函数 高阶函数 sorted(iterable,[reverse,key]) map(func, *iterables) reduce(func,iterable) filter(func,iterable) range函数 能够生成一个指定的数字序列 使用案例: ''' range(start,stop,step) 参数: start : 开始的值 ,默认值为0 stop : 结

  • Python filter()及reduce()函数使用方法解析

    一.filter() 在Python内建函数中,有一个和map()函数用法类似.却可以用来过滤元素的迭代函数,这个函数就是filter().它的函数原型是:filter(function,itearable) filter返回的是一个filter对象,可以通过list()或者for循环取出内容. 注意:传入的函数返回值必须是布尔类型.若是真则保留元素,假则过滤掉这元素 def is_even(x): return x%2==0 a=filter(is_even,[1,2,3,4,5,6]) pr

  • python中map()函数使用方法详解

    目录 总结 先看map()函数底层封装介绍: 注释中翻译为: map(func, *iterables)--> map对象 创建一个迭代器,使用来自的参数计算函数每个迭代器.当最短的迭代器耗尽时停止. 作用: map(func, lst) ,将传⼊的函数变量 func 作⽤到 lst 变量的每个元素中,并将结果组成新的列表 (Python2)/ 迭代器(Python3) 返回. 注意: map()返回的是一个迭代器,直接打印map()的结果是返回的一个对象. 示例代码1: lst = ['1',

  • Python3中map(),reduce(),filter()的详细用法

    目录 前言 1.map() 2.filter() 3.reduce() 前言 Python3中的map().reduce().filter() 这3个一般是用于对序列进行操作的内置函数,它们经常需要与 匿名函数 lambda 联合起来使用,我们今天就来学习下. 1.map() map() 可以用于在函数中对指定序列做映射,返回值是一个迭代器,其使用语法如下: map(function, *iterables) 上面的第一个参数 function 指一个函数,第二个参数 iterable 指一个或

  • Python中map,reduce,filter和sorted函数的使用方法

    map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): return x*x #求x的平方 map(sq, [1,3, 5,7,9]) #[1, 9, 25, 49, 81] 在需要对list中的每个元素做转换的时候, 会很方便 比如,把list中的每个int 转换成str map(str, [23,43,4545,324]) #['23', '43',

  • Python3中map()、reduce()、filter()的用法详解

    目录 1.map() 2.filter() 3.reduce() Python3中的map().reduce().filter() 这3个一般是用于对序列进行操作的内置函数,它们经常需要与 匿名函数 lambda 联合起来使用,我们今天就来学习下. 1.map() map() 可以用于在函数中对指定序列做映射,返回值是一个迭代器,其使用语法如下: map(function, *iterables) 上面的第一个参数 function 指一个函数,第二个参数 iterable 指一个或多个可迭代对

  • Python3的高阶函数map,reduce,filter的示例详解

    函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 注意其中:map和filter返回一个惰性序列,可迭代对象,需要转化为list >>> a = 3.1415 >>> round(a,2) 3.14 >>> a_round = round >>> a_round(a,2) 3.14 >>> def func_devide(x, y, f): return f(x) - f(y

  • python中三种高阶函数(map,reduce,filter)详解

    map(function,seq[,seq2]) 接收至少两个参数,基本作用为将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列 返回一个可迭代的map对象 function:函数对象 py2中可为None,作用等同于zip() 如: py3中不可为None,None是不可调用.不可迭代对象 seq:可迭代对象,可以传一个或多个 # 传一个: def func(i):return i*2 print([i for i in map(func,[1,'2'])]) # [2,'22']

  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题

    Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰.你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然). python3.0中怎么创建bytes型数据 bytes([1,2,3,4,5,6,7,8,9]) bytes("python"

  • Python numpy中np.random.seed()的详细用法实例

    目录 引言 E.G.实验 E.G.随机数种子参数的作用 补充:一个随机种子在代码中只作用一次,只作用于其定义位置的下一次随机数生成 总结 引言 在进行机器学习和深度学习中,我们会经常用到np.random.seed(),利用随机数种子,使得每次生成的随机数相同. numpy.randn.randn(d0,d1,...,dn) randn函数根据给定维度生成大概率在(-2.58~+2.58)之间的数据 randn函数返回一个或者一组样本,具有标准正态分布 dn表示每个维度 返回值为指定维度的arr

  • 浅谈Python3中strip()、lstrip()、rstrip()用法详解

    简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) rstrip:用来去除结尾字符.空白符(包括\n.\r

  • PHP中ORDER BY子句的详细用法教程

    我们已经看到SQL SELECT命令来获取数据从MySQL表.当选择行,MySQL服务器是自由返回,除非指示说如何排序结果否则它会自由返回.指定需要结果集增加一个ORDER BY子句要作为排序依据的列或列名进行排序. 语法: SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]] 这里是通用的SQL的SELECT命令的语法,ORDER BY子句从My

随机推荐