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

目录

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))

显示结果:

 使用示例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))

 显示结果:

使用示例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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值