Python3中一些高阶函数map、reduce、filter详解及示例

栏目: Python · 发布时间: 5年前

内容简介:python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数即示例结果:示例结果:

  python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数即 lambda 。第二个参数是一个可迭代对象,如列表、字典字符串等。 map 函数返回的是一个map对象,也是一个可迭代对象,可以利用for循环迭代查看元素,也可以尝试 list() 将其转为列表对象操作,map形式: map(function, iterable, ...)

map用法

1.计算列表中所有数的平方

L1 = [1, 2, 3, 4]


# 计算某数的平方
def square(x):
    return x ** 2


square_result = map(square, L1)
print(list(square_result))

# 配合lambda最佳
square_result = map(lambda x: x ** 2, L1)
print(list(square_result))
复制代码

示例结果:

[1, 4, 9, 16]
[1, 4, 9, 16]
复制代码

2. 处理序列对象中的字符串

# 集中处理字符串开头和结尾的换行符和空格
S = [
    'I like Python\r',
    '\t\n      Python make me happy \n',
    ' without python, without living.'
]

NEW_S = list(map(lambda s: s.strip(), S))
print(NEW_S)
# 当然此例利用列表解析更加简洁:
NEW_S = [s.strip() for s in S]
print(NEW_S)
复制代码

示例结果:

['I like Python', 'Python make me happy', 'without python, without living.']
['I like Python', 'Python make me happy', 'without python, without living.']
复制代码

多参数传递

map也接受多个可迭代对象作为参数传递,若可迭代对象元素数量不一致则传递至元素数量最小的为止

# 两组数两两相加
L1 = [1, 2, 3, 4, 5, 6, 7]
L2 = [5, 4, 3, 2, 1]
sum_result = map(lambda x, y: x + y, L1, L2)
for one in sum_result:
    print(one)
复制代码

示例结果:

6
6
6
6
6
复制代码

reduce概述

reduce用于对可迭代对象中的元素进行累积操作,reduce接受两个参数,一个是函数 f(x, y) 参数(该函数必须有两个参数),另一个是可迭代对象。reduce行为是先将可迭代对象的前两个元素传入 f(x, y) 中,然后不断将 f(x, y) 的返回值再次和下一个迭代对象传入 f(x, y) ,直到迭代完迭代对象中的元素,并返回最终的 f(x, y) 的返回值。reduce形式: reduce(function, iterable[, initializer])

reduce用法

Python 3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数。

from functools import reduce
L = [1,2,3,4,5]
sum_results = reduce(lambda x,y: x + y, L) 
print(sum_results)
复制代码

示例结果:

15
复制代码

上例即我们通过 reduce 高阶函数完成了对列表中五个数的累加过程。

filter概述

filter用于过滤筛选可迭代对象中的元素,如果符合条件则返回对应的元素序列(类型为 filter ),filter接受两个参数,一个是函数用于筛选元素,返回值为 TrueFlase ,另一个是可迭代对象。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google将带来什么?

Google将带来什么?

杰夫·贾维斯 / 陈庆新、赵艳峰、胡延平 / 中华工商联合出版社 / 2009-8 / 39.00元

《Google将带来什么?》是一本大胆探索、至关重要的书籍,追寻当今世界最紧迫问题的答案:Google将带来什么?在兼具预言、宣言、思想探险和生存手册性质的这样一《Google将带来什么?》里,互联网监督和博客先锋杰夫·贾维斯对Google这个历史上发展速度最快的公司进行了逆向工程研究,发现了40种直截了当、清晰易懂的管理与生存原则。与此同时,他还向我们阐明了互联网一代的新世界观:尽管它具有挑战性......一起来看看 《Google将带来什么?》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具