Python:高阶函数

高阶函数

变量可以指向函数,函数的参数接收变量,所以一个函数可以接收另一个函数作为参数,这就叫做高阶函数。

map/reduce

map(函数,iterable) “散” 返回的是一个Iterator
from collections.abc import Iterable
from collections.abc import Iterator
def square(x):   
    return x*x
print(list(map(square,[y for y in range(1, 11)])))
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>isinstance(map(square,[1,2,3,4]),Iterator)
True
reduce(函数,iterable) “聚”
In[1]:from functools import reduce
In[2]:L=[1,2,3,4,5,6]
In[3]:def cum(x,y):
		  return x*y  
In[4]:print(reduce(cum,L))
Out[5]:720

函数cum需要传入两个参数,reduce(cum,L)=cum(cum(cum(cum(cum(1,2),3),4),5),6)

filter

过滤序列:根据返回的True和False决定是否保留
>>>def isOdd(x):
    return x%2==1
>>>L=[x for x in range(6)]
>>>>from collections.abc import Iterator
>>>isinstance(filter(isOdd,L),Iterator)
True
>>>print(list(filter(isOdd,L)))
[1, 3, 5]

filter返回的Iterator,是一个惰性序列,用next调用很明显十分的鸡肋,所以通过list()强迫filter函数计算并获得所有的结果。

sorted

排序函数:可以接收一个key函数实现自定义排序,返回的是一个列表,而不是Iterator
>>>print(sorted([-5,1,10,-100],key=abs))
[1, -5, 10, -100]
>>>print(sorted([-5,1,10,-100],key=abs,reverse=False))
[1, -5, 10, -100]
>>>print(sorted([-5,1,10,-100],key=abs,reverse=True))
[-100, 10, -5, 1]

默认reverse为False,即升序,当reverse=True时为降序

lambda

匿名函数:避免函数名冲突,冒号右侧只能是表达式或确定的值,局限性在于只能处理逻辑简单的情况
>>>print(map(lambda x:x*x,[1,2,3,4,5]))
<map object at 0x000001C6ED145CD0>
>>>print(list(map(lambda x:x*x,[1,2,3,4,5])))
[1, 4, 9, 16, 25]
>>>print(list(map(lambda x:x if x%2==0 else -x,[1,2,3,4,5,6,7,8,9])))
[-1, 2, -3, 4, -5, 6, -7, 8, -9]

import的快捷键:ctrl+alt+空格

在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值