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