python中的map,fliter,reduce用法

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/3/14 20:48
# @Author  : banzhu
# @File    : map-filter-reduce.py

# map():对可迭代对象中的每个元素,都调用指定的函数,并返回一个 map 对象
# 基本语法格式:map(function, iterable)
# function 参数表示要传入一个函数,其可以是内置函数、自定义函数或者 lambda 匿名函数;
# iterable 表示一个或多个可迭代对象,可以是列表、字符串等。
# 返回的是一个 map 对象,不能直接输出,可以通过 for 循环或者 list() 函数来显示

x = [1,2,3,4,5]
y = [2,3,4,5,6]
new_list = map(lambda x,y:(x*y)+2,x,y)
print(list(new_list))

# 输出结果为:[4,8,14,22,32]
# 也可以这样写 new_list = list(map(lambda x,y:(x*y)+2,x,y))
#            print(new_list)
# 以上可以理解为,调用x,y两个可迭代对象(列表)内的每一个对应位置的参数,通过(x*y)+2的表达式来进行计算
# 最后通过list()函数把计算出的值转换成列表形式进行输出


# filter():对可迭代对象中的每个元素,都使用funcition函数判断,并返回True或者False,最后将返回True的元素组成一个新的可遍历的集合。
# 基本语法格式:filter(function, iterable)

x = [1,2,3,4,5]
new_list = list(filter(lambda x:x%2==0,x)) # 找出偶数。python3.*之后filter函数返回的不再是列表而是迭代器,所以需要用list转换。
print(new_list)

# reduce(): 对一个列表进行计算并返回结果
# 语法格式:reduce(function, iterable)
# function 规定必须是一个包含 2 个参数的函数
# 由于 reduce() 函数在 Python 3.x 中已经被移除,放入了 functools 模块,因此在使用该函数之前,需先导入 functools 模块

from functools import reduce
y = [2,3,4,5,6]
reduce(lambda x,y: x + y,y) # 直接返回一个值

# 先计算头两个元素:f(2, 3),结果为5;
# 再把结果和第3个元素计算:f(5, 4),结果为9;
# 再把结果和第4个元素计算:f(9, 5),结果为14;
# 再把结果和第5个元素计算:f(14, 6),结果为20;
# 由于没有更多的元素了,计算结束,返回结果20。
处在这个俗世,也得让自己变得更好吧
原文地址:https://www.cnblogs.com/butaileng7/p/14535774.html