python学习(9)高阶函数map、reduce、filter、sorted

时间:2021-07-27 02:20:34

一、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)]