zoukankan      html  css  js  c++  java
  • python的reduce,map,zip,filter和sorted函数

    一、    reduce(function,Iterable),它的形式和map()函数一样。不过参数function必须有两个参数

    reduce()函数作用是:把结果继续和序列的下一个元素做累积计算。

    例,  

    1 def add(x, y) :            # 两数相加
    2      return x + y
    3 
    4 
    5 reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5=15
    6 reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数

    注意:在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里
    用的话要 先引入
         from functools import reduce


    二、    map(function,Iterable)将列表中的每一个元素作用于函数。

    1.返回值:

        Python 2.x 返回列表。
        Python 3.x 返回迭代器。


    所以python3中获取map返回值的两个基本方法:
        ①print(list(map(f,Iter)))      #这里的f代表函数,Iter代表可迭代对象。
        ②使用 for 循环。

    例,

    1   ①m = map(lambda x : x + 1, [1, 2, 3])
    2      print(list(m))   #结果为:[5, 7, 9]
    3 
    4   ②提供了两个列表,对相同位置的列表数据进行相加
    5      map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    6      #结果为:[3, 7, 11, 15, 19]

    三、    zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象。
    例,

    1     lt1 = ['a', 'b', 'c']
    2     lt2 = [1, 2, 3]
    3     lt3 = ['A', 'B', 'C']
    4     result = list(zip(lt1, lt2, lt3))
    5     print(result)   #输出结果:[('a', 1, 'A'), ('b', 2, 'B'), ('c', 3, 'C')]



    四、    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
        filter接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
        语法:filter(function, Iterableble)

    例,

    1     func = lambda x : x % 2 == 1
    2     print(list(filter(func, [1,2,3]))) #输出结果:[1, 3]

    五、sorted()函数对所有可迭代的对象进行排序操作。

        sort 与 sorted 区别:
        ①sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
        ②list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
    例,

    1 lst=['b','a','c']
    2 print(id(lst))#输出:670116494664
    3 print(id(sorted(lst)))#输出:670116492744


        sorted 语法:
        sorted(iterable[, cmp[, key[, reverse]]])

        参数说明:

        iterable -- 可迭代对象。
        cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
        key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
        reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

        有时候,我们要处理的数据内的元素不是一维的,而是二维的甚至是多维的,那要怎么进行排序呢?这时候,sorted()函数内的key参数就派上用场了!从帮助信息上可以了解到,key参数可传入一个自定义函数。
    例,

    
    
    dct = {('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)}
    print(sorted(dct, key=lambda s:s[2]))#这里的s代表可迭代对象dct中的每一个元素,s[2]代表利用第三个元素排序
    
    
    
  • 相关阅读:
    ubuntu12.04 安装CAJViewer-ubuntu(待解决)
    ROS中遇到的一些问题和解决(更新)
    Virtualbox主机和虚拟机之间文件夹共享及双向拷贝
    Ubuntu自带截图工具screenshoot
    Ubuntu vim终端常用的快捷键
    Ubuntu终端多窗口分屏Terminator
    Apollo快速安装视频教程
    ML--XOR问题
    DL之Example1--MNIST
    Python之ML--人工神经网络识别图像
  • 原文地址:https://www.cnblogs.com/Downtime/p/8441048.html
Copyright © 2011-2022 走看看