map()接收两个参数,一个是函数f,一个是可迭代对象Iterable.
map将传入的函数依次作用到序列的每个元素并把结构作为新的迭代器Iterator返回。
如:
def f(x):
return x*x
l=map(f,[1,2,3,4])
list(l)
输出:【1,4,9,16】
又如:用list输出整个序列
list(map(str,[1,2,3,4]))
输出: 【‘1’,‘2’,‘3’,‘4’】
reduce()也是接收两个参数,一个函数,一个序列【x1,x2,x3,…】,将一个函数作用在这个序列上,第一个元素做完运算后,把结果继续和下一个元素做累计运算。
如:
from functools import reduce
def fn(x,y):
return x*10+y
reduce(fn,[1,3,5])
输出:135
也可以将二者一起联合使用进行运算.
filter()也接收两个参数,一个函数和一个序列。将函数作用于序列,然后根据返回值是True还是False,决定保留还是丢弃这个元素。(符合函数条件就把值挑出来留下)是一个筛选函数。
lambda匿名函数
语法:lambda 参数:返回值
只能写一行,不要写复杂的,逻辑结束后直接返回数据
注:用__name__查看函数名
如:
a=lambda x: x*x
print(a(6))
print(a.--name--)
sorted() :排序算法
用sorted()排序的关键在于实现一个映射函数
(1)直接对list进行排序
(2)可以接收一个key函数来实现自定义排序。例如按绝对值大小排序:
sorted([36,5,-12,9,-21],key=abs)
输出:【5,-9,-12,-21,36】
(3)对字符串排序。如:忽略大小写排序:
sorted(["bob","about","Zoo","Credit"],key=str.lower)
输出:["about","bob","Credit","Zoo"]
要想反向排序,不需要改key,传入第三个参数即可reverse=True
sorted(["bob","about","Zoo","Credit"],key=str.lower,reverse=True)
输出:【"Zoo","Credit","bob","about"】