1、map的使用:
map()函数可以把传入的函数作用到传入的Iterable中的每一个元素。
例:f(x)=x2(平方),要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]
def f(x):
return x*x
r=map(f,[1,2,3,4,5,6,7,8,9])
2、reduce的用法:
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算
例1:对一个序列求和
from functools import reduce
def add(x+y):
return x+y
reduce(add,[1,2,3,45,5,6,7,8])
例2:将字串转成int
原始版本->
from functools import reduce
def fn(x,y):
return x*10+y
reduce(fn,[1,3,5,7,9])
近代版本->
from functools import reduce
def fn(x,y):
return x*10+y
def char2num(s):
digits ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
return didits[s]
reduce(fn,map(char2num,'13467'))
现代版本->
from functools import reduce
DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2int(s):
def fn(x,y):
return x*10+y
def char2int(c):
return DIGITS[c]
return reduce(fn,map(char2int,s))
未来超级版本->
from functools import reduce
DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def char2num(s):
return DIGITS[s]
def str2int(s):
return reduce(lambda x,y:x*10+y,map(char2num,s))
3、filter用法:
filter()
也接收一个函数和一个序列,传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素
例:删除list中偶数,只留下奇数
def is_odd(n):
return n%2 ==1
list(filter(is_odd,[1,2,4,5,6,7,8,9,32]))
4、sorted的用法:
sorted用于排序
例1:简单排序
sorted([35,22,-44,54,234,4,65,224])
例2:接收一个key函数来实现自定义排序
sorted([35,22,-44,54,234,4,65,224],key=abs)
按绝对值来排序
例3:对字符串排序
sorted(['bob','jack','Rose','City'],key=str.lower,reverse=True)
这里先将字串变成小写,再反向排序