python-高阶函数map/reduce/filter/sorted/sort详解用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deng1456694385/article/details/87299145

python-高阶函数map/reduce/filter/sorted/sort详解用法

高阶函数

高阶函数就是可接受另一个函数作为参数传入的运行的函数,下面是四个常用的python内置处理List的函数都为高阶函数

map(每项单独处理最后返回一个Iterator)

基本用法与js的map相同,就是参数方法写在第一项

>>> def f(x):
...     return x +1
...
>>> r = map(f, [1,2,3,4,5]) //返回出来是一个迭代器
>>> list(r)
[2,3,4,5,6]

reduce(每项处理得到最后返回单个值,其实就是累计)

基本用法与js的map相同,就是参数方法写在第一项,

>>> from functools import reduce
>>> def add(sum, item):   #sum是累计,item新接收的一项
...     return sum + item   #返回值就是下一次的累计
...
>>> reduce(add, [1,2,3,4])
25

filter(判断每项是否符合要求,返回一个保留部分元素的Iterator)

def is_odd(n):
    return n % 2 == 1   #通过返回值判断是否保留,true保留
#返回的是迭代器,需要先转成list
list(filter(is_odd, [1, 2, 3, 4,5, 6]))
# 结果: [1, 3, 5]

sorted(返回一个经过排序后的List)

这个不太一样返回直接返回的是List,而且方法是放在第二个参数上的

只传入list就是默认排序,默认按数字大小排序,字符串按照首字母大小排序

>>> list(sorted(['c','a','b']))
['a', 'b', 'c']

>>> list(sorted([3,2,1]))
[1, 2, 3]

自定义排序,需要用一个key的命名函数来排序,后面处理函数不影响元素的值

>>> sorted([-3, 2, -1], key=abs)
[-1, 2, -3]

第三个参数reserse 用来改变升序降序

>>> sorted([-3, 2, -1], key=abs,reserve=True)
[-3, 2, -1]

来个复杂点的

def f1(i):
	return i[1]
	
def f2(i):
	return i[2]
//
L = [('b', 10), ('a', 6), ('c', 5)]

>>> sorted(L,key=f1)
[('a', 6), ('b', 10), ('c', 5)]

>>> sorted(L,key=f2)
[('c', 5) , ('a', 6), ('b', 10), ]

对比一下sort

sort函数和sorted函数的区别在于,sort会直接改变原对象,sorted会返回一个新的对象,不改变原对象,用法上是L.sort,参数方面是完全一样的

>>> L = [3,2,1]
>>> L.sort()
>>> L
[1,2,3]

猜你喜欢

转载自blog.csdn.net/deng1456694385/article/details/87299145