Torres-tao  

高阶函数满足以下条件之一:

  1. 函数接受一个或多个函数作为参数传入;
  2. 函数返回一个函数

1、map函数

​ map(func,*iterable):返回一个可迭代对象,此迭代对象用函数func对可迭代对象iterable中的每一个函数作为参数计算后得一结果,当最短的一个可迭代对象不再提供数据时可迭代对象生成数据结束。

def pow2(x):
    return x** 2

for x in map(pow2,range(1,10)):
    print(x)
>>> def pow2(x):
...     return x**2
... 
>>> for i in map(pow2,range(1,10)):
...     print(i)
... 
1
4
9
16
25
36
49
64
81

2、filter函数

​ filter(func,iterable):返回一个可迭代对象,此迭代对象将对iterable中获取到的数据用函数func进行筛选。func将对iterable中的每个元素进行求值,返回False则将此数据丢弃,返回True,则保留此数据。

def myadd(x):
    return x % 2 == 1

for i in filter(myadd,range(11)):
    print(i)
>>> def myadd(x):
...     return x % 2 == 1
... 
>>> for i in filter(myadd,range(1,11)):
...     print(i)
... 
1
3
5
7
9

3、sorted函数

描述

sorted()函数对所有可迭代的对象进行操作

sort和sorted区别

  • sort是应用在list上的方法,sorted是可对所有可迭代对象进行排序操作
  • list的sort方法返回的是对已经存在的列表进行操作,无返回值;而sorted方法返回的是一个新的list,而不是在原来的基础上进行操作。

语法

sorted(iterable,cmp=None,key=None,reverse=False)

参数说明:

  • iterable:可迭代对象
  • cmp:比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵循的规则为:大于则返回1;小于则返回-1,等于则返回0
  • key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
  • reverse:排序规则,reverse=True表示降序;reverse=False表示升序(默认)

实例

>>>a = [5,7,6,3,4,1,2]
>>> b = sorted(a)       # 保留原列表
>>> a 
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]

>>> L=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函数
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> sorted(L, key=lambda x:x[1])               # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
 
 
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(students, key=lambda s: s[2])            # 按年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
 
>>> sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
posted on 2022-03-24 17:08  雷子锅  阅读(39)  评论(0编辑  收藏  举报