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

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]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值