一、map()和reduce()
map()接收两个参数,一个是函数,一个是Iterable,一次将函数作用到每一个元素中,并把结果作为新的Itertor返回
def func(t): return t*t; arr=[1,2,3,4,5] r = map(func,arr) print(list(r));
def func(t): return t[0].upper()+t[1:].lower() arr=['weaDS','DDss','hhGy'] r=map(func,arr); print(list(r))
#['Weads','Ddss','Hhgy']
reduce()接收两个参数。一个是函数,一个是序列,函数作用在一个序列上,这个函数必须返回一个值,reduce把结果继续和序列的下一个元素做累积计算
二、filter过滤序列
接收一个函数和一个序列,将函数作用于序列的每一元素,通过返回的True和False决定保留或者去除该元素
def is_odd(t): return t%2==1 arr=[1,4,6,8,12,3,5,9] l2= list(filter(is_odd,arr)) print(l2)
#[1,3,5,9]
filter()函数是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,用list()函数获得所有结果并返回list
三、sorted排序
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经过key=toname处理过的list
def tofen(t): return t[1] def toname(t): return t[0] arr = [("lili",98),("keke",97),("xixi",96)] up = sorted(arr,key=tofen) down = sorted(arr,key=tofen,reverse=True) case = sorted(arr,key=toname) print(up)
#[('xixi',98),('keke',97),('lili',98)]
print(down)
#[('lili',98),('keke',97),('xixi',96)]
print(case)
<pre name="code" class="plain" style="font-size: 13.3333px;">#[('keke',97),('lili',98),('xixi',96)]