您的位置:首页 > 编程语言 > Python开发

Python3中的高阶函数(map,reduce,filter,sorted)

2017-12-16 09:39 651 查看
一,map

map()
函数接收两个参数,一个是函数,一个是
Iterable
map
将传入的函数依次作用到序列的每个元素,并把结果作为新的
Iterator
返回,实际就是数学中的给定函数和变量求值

def f(x):#map
return x*x
print(list(map(f,[1,2,3,4,5])))#将f函数作用于list的每一个元素
print(list(map(str,[1,2,3])))#将整数转为字符串二、reduce
reduce
把一个函数作用在一个序列
[x1, x2, x3, ...]
上,这个函数必须接收两个参数,
reduce
把结果继续和序列的下一个元素做累积计算
def mul(x,y):
    return x*y;
print(reduce(mul,[1,2,3,4,5,6]))#累计求积三、filter

map()
类似,
filter()
也接收一个函数和一个序列。和
map()
不同的是,
filter()
把传入的函数依次作用于每个元素,返回值是
True
则保留,否则舍弃
def is0dd(n):
return n%2==0
print(list(filter(is0dd,[1,2,3,4,5,6])))#过滤偶数四、sorted

elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
print(sorted(elements))#[(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]
elements.sort()
print(elements)#注意此处不能写成print(elements.sort()
operator模块中的itemgetter()函数,用于获取对象的哪些维的数据
from operator import itemgetter
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
print(sorted(L,key=itemgetter(0)))#按名字排序
print(sorted(L,key=itemgetter(1),reverse=True))#按成绩从高到低排序
排序中除了应用itemgetter外还可以用内置函数lambda
elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
print(sorted(elements,key=lambda e:e[1:]))#通过切片的方式 按后两个元素排序print(sorted(elements,key=lambda e:(e[1],e[2])))#直接指定,必须用()括起来

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: