【python】python内置函数——map()/fliter()/reduce对传入的列表进行指定操作

导读:本篇文章讲解 【python】python内置函数——map()/fliter()/reduce对传入的列表进行指定操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1.map()——根据提供的函数对指定序列做映射

2. filter()——根据给定的函数过滤掉指定序列中的元素

3. reduce()——根据给定的函数对参数序列中的元素进行累积


1.map()——根据提供的函数对指定序列做映射

map()函数是根据提供的函数(即function)对指定的序列(即iterable)做映射。

简单说就是iterable指向的每一个元素都会调用function函数,返回每次function函数返回值的新列表。

map()函数的语法如下:

map(function,iterable,...)

参数说明:

  • function 是调用的函数
  • iterable 是一个或多个序列

返回值:python2返回列表;python3返回迭代器。

需要注意,如果函数有多个参数,但每个参数的序列元素数量不一样,会根据最少元素的序列进行,如示例3.

使用示例1:计算列表中每个元素的平方

# python2.x

def square(x):
    return x**x

l = map(square,[1,2,3,4,5,6])
print(l)
print(type(l))

显示结果:

【python】python内置函数——map()/fliter()/reduce对传入的列表进行指定操作

 使用示例2:计算列表中每个元素的三次方

# python3.x

def square(x):
    return x**x

l = list(map(square,[1,2,3,4,5,6]))  # 使用list转换为列表
print(l)
print(type(l))

 显示结果:

【python】python内置函数——map()/fliter()/reduce对传入的列表进行指定操作

使用示例3,如果函数有多个参数,参数序列元素不一样,按照元素最少的序列进行映射。

listx=[1,2,3,4,5,6,7]
listy=[2,3,4,5,6]
listz=[100,100,100,100]
l = list(map(lambda x,y,z : x*100 + y*100 + z, listx,listy,listz))
print(l)  # 输出 [400, 600, 800, 1000]

2. filter()——根据给定的函数过滤掉指定序列中的元素

filter()用于过滤序列,过滤掉不符合条件的元素,返回由符合条件的元素组成的新列表。python3中返回迭代器对象。

filter()语法格式:

filter(function,iterable)

序列中的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中。

参数说明:

  • 参数function是判断函数;
  • 参数iterable是可迭代对象;

返回值:python2中返回列表,python3返回迭代器对象。

使用示例1:得到列表中的所有偶数

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

l = filter(is_even,[1,2,3,4,5,6,7,8,9])
print((list(l)))  # 输出 [2, 4, 6, 8]

# 与lambda表达式混合使用
l = filter(lambda n : n%2==0, [1,2,3,4,5,6,7,8,9])
print(list(l))  # 输出 [2, 4, 6, 8]

3. reduce()——根据给定的函数对参数序列中的元素进行累积

reduce()函数对参数序列中的元素进行累积。该函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数function(有两个参数)先对集合中的第1,2个元素进行操作,得到的结果再与第三个数据用function函数运算,最后得到一个结果。

注意:python3中reduce()函数被移到functools模块,如果要使用该函数,需要导入functools模块来调用。

reduce()函数语法格式:

reduce(function,iteranle[, initializer])

参数说明:

  • function:函数,一定有两个参数;少于两个或者多于两个都不可以;
  • iterable:可迭代对象;
  • initializer:可选,初始参数;

返回值:返回函数计算的结果;

使用示例:计算1+2+3+4+5

def add_nums(x,y):
    return  x+y

l=reduce(add_nums,[1,2,3,4,5])
print(l)  # 输出 15

l=reduce(lambda x,y:x+y,[1,2,3,4,5])
print(l)  # 输出 15

全文参考:Python 内置函数 | 菜鸟教程 (runoob.com)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46106.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!