zoukankan      html  css  js  c++  java
  • Python map、reduce、filter函数用法

    map():

    第一个参数接受一个函数,

    第二个参数接受一个或多个可迭代的类型,返回的是一个集合。

    把函数依次作用在list中的每一个元素上,得到一个新的list并返回。

    del square(x):
        return x ** 2
     
    map(square,[1,2,3,4,5])
     
    # 结果如下:
    [1,4,9,16,25]
    通过使用lambda匿名函数的方法使用map()函数:
    
    map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])
     
    # 结果如下:
    [3,7,11,15,19]
    通过lambda函数使返回值是一个元组:
    
    map(lambdax, y : (x**y,x+y),[2,4,6],[3,2,1])
     
    # 结果如下
    [(8,5),(16,6),(6,7)]
    当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
    
    map(None,[2,4,6],[3,2,1])
     
    # 结果如下
    [(2,3),(4,2),(6,1)]
    通过map还可以实现类型转换
    
    将元组转换为list:
    
    map(int,(1,2,3))
     
    # 结果如下:
    [1,2,3]
    将字符串转换为list:
    
    map(int,'1234')
     
    # 结果如下:
    [1,2,3,4]
    提取字典中的key,并将结果放在一个list中:
    
    map(int,{1:2,2:3,3:4})
     
    # 结果如下

    reduce()

    第一个参数是一个函数,第二个参数是一个可以迭代的类型(Iterable) 
    第一个参数的函数也必须接受两个参数,reduce会把函数的返回值与序列的下一个元素继续传入函数做计算。

    示例:求从1累乘到100的值

    #reduce 将函数的到的结果继续当做参数传入到函数中去
    from functools import reduce
     
    def add(x,y): 
        return x*y 
    print(reduce(add,range(100)))

    那么我们可以形象的把这个方法做一个等价描述:

    reduce(fn, [x1, x2, x3, x4,......]) = f(f(f(f(x1, x2), x3), x4) ......)

    filter():

    第一个参数是一个函数,第二个参数是一个可以迭代的类型(Iterable) 
    第一个参数的函数接受一个参数,reduce会把函数的返回值与序列的下一个元素继续传入函数做计算。

    示例:

    people = [
        {"name":"Alex","age":20},
        {"name":"Hana","age":19},
        {"name":"Anny","age":16},
        {"name":"Sunny","age":18},
    ]
    f = filter(lambda p:p["age"]>18, people)
    print(list(f))

    结果为:

    [{'name': 'Alex', 'age': 20}, {'name': 'Hana', 'age': 19}]
  • 相关阅读:
    自制对焦测试卡
    RHEL AS4上配置snmpd遇到问题及解决办法笔记
    一个OID资料集中网站
    mrtg配置小问题
    sybase 优化总结[zt]
    [ZT] solarwinds 2002工程师版本(带注册机)
    推荐四个网盘资源搜索工具
    Hadoop 集群搭建
    分布式文件系统 HDFS 简介
    HDFS Shell 命令实操
  • 原文地址:https://www.cnblogs.com/-wenli/p/13823326.html
Copyright © 2011-2022 走看看