• 欢迎访问圣洁的白莲!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

python3 map,filter,reduce函数

Python 菜根譚 4个月前 (07-31) 53次浏览 未收录 0个评论 扫描二维码
文章目录[隐藏]

本次简单介绍python中的三个高级函数,map、filter、reduce。

1.map

map() 会根据提供的函数对指定序列做映射。

map函数的语法:
  map(function,iterable)

第一个参数:必须是一个函数
第二个参数:必须是可迭代类型(简单说也就是可以被for循环的)
num_list = [11,22,33,44]
def func(arg):
    return arg+100  # 列表中的每一个数都加100
result = map(func,num_list)
print(list(result))     # [111, 122, 133, 144]

# 使用lambda更加方便
result1 = map(lambda x:x+100,num_list)
print(list(result1))     # [111, 122, 133, 144]

 

2.filter

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

filter的语法:
  filter(function, iterable)
第一个参数:用户判断的函数
第二个参数:可迭代对象
# 获取列表中的数字
content = [11,22,'abc','dd',33,44]

def func(x):
    return type(x) == int

result = filter(func,content)
print(list(result)) # [11, 22, 33, 44]

result1 = filter(lambda x: True if type(x) == int else False,content)
print(list(result1))

result2 = filter(lambda x:type(x) == int ,content)
print(list(result2))

 

3.reduce

reduce() 函数会对参数序列中元素进行累积。

reduce的工作过程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的过程中,首先把 前两个元素传给 函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值。

reduce语法:
  reduce(function, iterable[, initializer])

第一个参数:是一个函数,有两个参数
第二个参数:是一个可迭代对象
第三个参数:可选,初始参数

 

# reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块,所以我们需要导入相应的模块

import functools

# 对列表中的数进行相加
num_list = [1,2,3,4]
def func(x,y):
    return x+y
result = functools.reduce(func,num_list)
print(result)   # 10

v1 = ['I',' use',' python']

result = functools.reduce(lambda x,y:x+y,v1)
print(result)
result = functools.reduce(lambda x, y: x * 10 + y, [1 , 2, 3, 4, 5])
print(result)   # 12345

由于博主正在学习python,如果有哪里有问题欢迎指出,谢谢!

浩瀚学海,虔诚分享!


圣洁的白莲 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 map,filter,reduce函数
喜欢 (1)
[]
分享 (0)
关于作者:
浩瀚学海,虔诚分享!

您必须 登录 才能发表评论!