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]代表利用第三个元素排序

 

posted @ 2018-02-11 12:34  Downtime  阅读(403)  评论(0编辑  收藏  举报
TOP