Python之高阶函数map、reduce、filter、sorted

【map】

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

计算该函数输入值为1到10,并返回一个数组

def f(x):

           return x*x

L=list(range(1,11))

print (list(map(f,L)))

运行结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

[Finished in 0.7s]

把第一个字母转化为大写字母,其余小写,例:

def normalize(name):

    return name.capitalize()

L1 = ['adam', 'LISA', 'barT']

L2 = list(map(normalize, L1))

print(L2)

 

【reduce】

把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

from functools import reduce

def f(x,y):

    return x*10+y

L=[1, 3, 5, 7, 9]

print (reduce(f,L))

运行结果:

13579

【filter】

map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

判断一个字符串,筛选出连续为三个数字及三个数字以上的字符,并以数组形式打印

例:

import re

s="37eu3rh45666hjfhdjhf9444njdhfjr445"

def f(x):

           return len(x)>=3

L=[]

L=re.findall('[0-9]+',s)

print (list(filter(f,L)))

运行结果:

['45666', '9444', '445']

[Finished in 0.3s]

 

【sorted】

sorted()函数就可以对list进行排序

sorted()函数也是一个高阶函数,可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

sorted([36, 5, -12, 9, -21], key=abs, reverse=True)#reverse表示倒序显示

运行结果:

[36, -21, -12, 9, 5]

[Finished in 0.5s]

 

根据元组排序

students = [('B', 75), ('A', 92), ('B', 66), ('L', 88)]

print(sorted(students, key=lambda t: t[1]))

print(sorted(students, key=lambda t: t[1]), reverse=True))

 

运行结果:

[('B', 66), ('B', 75), ('L', 88), ('A', 92)]

[('A', 92), ('L', 88), ('B', 75), ('B', 66)]

[Finished in 0.3s]

猜你喜欢

转载自blog.csdn.net/qq_35577990/article/details/91345225