• 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。
    处在这个俗世,也得让自己变得更好吧
  • 相关阅读:
    数据表后缀问题
    window.history.go(-1)返回且刷新页面
    mysql性能优化-慢查询分析、优化索引和配置
    从数据库、代码和服务器对PHP网站Mysql做性能优化
    什么是WEBserver? 经常使用的WEBserver有哪些?
    浅谈 C/S 和 B/S 架构
    Android常用开源项目
    csdn android视频播放器开发
    视频会议十大开源项目排行
    Android开源项目大全
  • 原文地址:https://www.cnblogs.com/butaileng7/p/14535774.html
Copyright © 2020-2023  润新知