zoukankan      html  css  js  c++  java
  • python基础之map/reduce/filter/sorted

    ---map(fun,iterable)

      首先来看一看map()函数,map函数接受两个参数,第一个参数是函数的名称,第二个参数一个可迭代对象。即map(fun,iterable)

      map函数就是将具体数值根据算法进行计算,并将结果保存为一个迭代器。我们知道,迭代器很'懒',通过调用next函数一次只输出一个值。

      来看一个最简单的map()例子。

    复制代码
    #给定一组数1,2,3要求求出每个数加一后的值
    >>> def add(x):
    ...     x+=1
    ...     return x
    ...     
    >>> l=[1,2,3]
    >>> r=map(add,l)
    >>> print(r)
    <map object at 0x03E4F510>
    >>> for i in r:
    ...     print(i)
    ...     
    2
    3
    4

    复制代码

    使用map对一行进行多个赋值

    x,y,z=map(int,input('please input your number:').split())
    print(x,y,z)

    如何利用map()将名字首字母大写?

    复制代码
    def daxie(name):
        return name[0].upper+name[1:]
    
    def daxie2(name):
        return '%s%s'%(name[0].upper(),name[1:])
    
    a=['linghuchong','dongfangbubai']
    r=map(daxie2,a)
    for i in r:
        print(i)
    复制代码

    --reduce

      reduce同map函数一样,也是接受两个参数,但不同的是,reduce函数将当前数值的计算结果与下一个数值的计算结果进行累积计算。

        reduce()函数第一次运行时会将可迭代对象的第一项作为第一个参数,第二项作为第二个参数传入函数。

        第二次运行则会将函数第一次运行所返回的结果作为第一个参数,可迭代对象的第三项作为第二个参数传入函数……

      即:reduce(f,[1,2,3,4])=f(f(f(1,2),3),4)

      来看一个简单的reduce函数的例子

    复制代码
    #
    from functools import reduce
    def leijia(x,y):    #注意,我们所定义的函数必须要接受两个参数,否则会报错
        return x+y
    print(reduce(leijia,[1,2,3,4,5]))
    
    #结果
    15
    
    #当然也可多加默认参数
    from functools import reduce
    def leijia(x,y,z=2):
        return x+y+z
    print(reduce(leijia,[1,2,3,4,5]))
    
    #结果:
    23
    复制代码

     --filter

      同上两个函数一样,接受两个参数,第一个参数为函数名,第二个参数为序列。但filter根据序列中各个元素作用与函数时,函数返回结果(True/False)来决定该元素是否保留。

      来看一个筛选偶数的简单例子:

    复制代码
    def select(num):
        if num%2==0:
            return True
        else:
            return False
    
    r=filter(select,[1,2,3,4,5,6])
    for i in r:
        print(i)
    复制代码

     --sorted(list,key=None,reverse=False)

      sorted顾名思义,就是排序的意思。

    >>> sorted([22,33,55,11,44])
    [11, 22, 33, 44, 55]

      sorted还可以接受一个key函数,实现自定义排序。

        1  key指定的函数将作用于list的 每一个元素 上。也就是list的 每个元素 作为参数传入key函数

        2  sorted()函数按照keys函数返回的结果进行排序,并 按照对应关系 返回list相应的元素

    >>> sorted([22,33,-11,44,-55],key=abs)
    [-11, 22, 33, 44, -55]

     来一个复杂一点的实例:

      

    复制代码
    #  根据名称排序
    >>> d=[('linghuchong','xixingdafa'),('dongfangbubai','kuihuabaodian'),('zhangwuji','qiankundanuoyi')]
    >>> def by_name(a):
    ...     return a[0]
    ...     
    >>> r=sorted(d,key=by_name)
    >>> print(r)
    [('dongfangbubai', 'kuihuabaodian'), ('linghuchong', 'xixingdafa'), ('zhangwuji', 'qiankundanuoyi')]
    
    #  根据功法排序
    >>> def by_gongfa(a):
    ...     return a[1]
    ...     
    >>> r2=sorted(d,key=by_gongfa)
    >>> print(r2)
    [('dongfangbubai', 'kuihuabaodian'), ('zhangwuji', 'qiankundanuoyi'), ('linghuchong', 'xixingdafa')]
    复制代码
  • 相关阅读:
    01011_怎么打开任务管理器?win7打开任务管理器方法
    php入门之数据类型
    手把手教你开发jquery插件(三)
    手把手教你开发jquery插件
    php7.0新特性
    Java类和对象的概念
    php新手第一次安装mongo
    什么是SQL游标?
    C#学习笔记2
    转发一篇分析LinQ是什么?
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6860356.html
Copyright © 2011-2022 走看看