python中的高阶函数map,filter,reduce,sorted

1.map函数:

  • map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。遍历序列,对序列中每个元素进行操作,最终获取新的序列。(注意:python2返回一个列表,python3返回一个迭代器)
lis0 = [1,2,3,4,5,6,7]
p = map(lambda x:x**2,lis0)
print(p,type(p))            # <map object at 0x03941970> <class 'map'>
for i in p:
    print(i) 

2.reduce函数:

  • reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。对于序列内所有元素进行累计操作,即是序列中后面的元素与前面的元素做累积计算(结果是所有元素共同作用的结果)
from functools import reduce  #在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数
l = reduce(lambda x,y:x+y ,[1,2,3,4,5])
print(l)            #15

3.filter函数:

  • 和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,返回值是True则保留,否则舍弃
f = filter(lambda x:x%3==0,[1,2,3,4,5,6,7,8,9])
for i in f:
    print(i)

4.sorted函数:

  • 使用sorted()方法和list.sort()方法进行排序,其中sorted()排序之后还是list,list.sort()排序返回的是一个object,需要输出排序内容还需要进行print()
  • sorted() 函数对所有可迭代的对象进行排序操作。
  • sort 与 sorted 区别:
  • sort是应用在 list上的方法,sorted可以对所有可迭代的对象进行排序操作。
    list 的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作。
a = [{"age":16,"name":"a"},{"age":35,"name":"b"},{"age":20,"name":"c"}]
a = sorted(a,key=lambda x:x["age"],reverse=True)
print(a)
#[{'age': 35, 'name': 'b'}, {'age': 20, 'name': 'c'}, {'age': 16, 'name': 'a'}]

注意:以上函数主要基于python3,python2与之基本相同。

猜你喜欢

转载自blog.csdn.net/cai_cai_cai_1992/article/details/83450372