python-12:内置 函数之一 filter map sorted reduce
1.filter(function or None, iterable) --> filter object:function 一般为lambda函数,用于指定过滤列表元素的条件,将为TRUE的元素过滤出来。
a.>>>ls=[1,2,3,4,5,6]
print(list(filter(lambda x:x not in ls,[2,8,9,3]))) #将不在ls列表中元素过滤出来,其结果是[8,9]。
2.sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)) 将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
3.map(func, *iterables) --> map object: *iterables表示可接收多个可迭代参数,传递的参数个数,取决于func接收参数的数量
a.第一个参数 func, 以*iterables序列中的每一个元素调用 func 函数,返回值:包含每次func函数返回值的 map object,可list转化为列表,元组等类型
b. >>> list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])) -->[3, 7, 11, 15, 19]#提供了2列表,对相同位置的列表数据进行相加
c.>>> list(map(lambda x,y: {x:y}, ['a', 'b','c'],[1,2,3])) -->[{'a': 1}, {'b': 2}, {'c': 3}] #lambda接收2个参数,传递2个可迭代的参数序列,返回一个字典
reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。功能:合并一个序列,压在一起,得到一个最终结果
from functools import reduce #要导入包
k=reduce(lambda a, b:a+b, [1, 2, 3, 4, 5, 6, 7, 8, 9],100) #结果145,功能,将列表中第1个和第2个数相加,结果再与第3个数相加,如果有基数100,把100+1,结果返回再+2,返回,累加操作
reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9]) # '1, 2, 3, 4, 5, 6, 7, 8, 9'