Python笔记007 - 高阶函数 - 1
函数式编程:
- 在Python中,函数是一等对象
- 一等对象一般都会具有如下特点:
- 对象是在运行时创建的
- 能赋值给变量或作为数据结构中的元素
- 能作为参数传递
- 能作为返回值返回
- 高阶函数(至少要符合以下两个特点中的一个):
- 接受一个或多个函数作为参数
- 将函数作为返回值返回
小功能:将列表中的偶数提取出来
l = [1,2,3,4,8,5,6,7,12,14,15]
def fn(lst):
'''
函数目标:将指定的列表中的偶数提取出来,生成一个新的列表
函数参数:lst,list列表,指定列表
'''
# 创建一个空列表,用来存储以后要用到的元素
new_list = []
# 判断要选择的元素,组成新列表
for i in lst:
if i % 2 == 0:
new_list.append(i)
return new_list
print(fn(l))
高阶函数:
l = [1,2,3,4,8,5,6,7,12,14,15]
def fn0(i):
# 判断是否是偶数,如果是返回True,如果不是,返回False
if i % 2 == 0:
return True
return False
def fn1(i):
# 判断是否是奇数,如果是返回True,如果不是,返回False
if i % 2 != 0:
return True
return False
def fn5(i):
# 判断是否是大于5,如果是返回True,如果不是,返回False
if i > 5:
return True
return False
def fn(lst,func):
'''
函数目标:将指定的列表中的偶数提取出来,生成一个新的列表
函数参数:lst,list列表,指定列表
'''
# 创建一个空列表,用来存储以后要用到的元素
new_list = []
# 判断要选择的元素,组成新列表
for i in lst:
if func(i):
new_list.append(i)
return new_list
print(fn(l,fn5))
- filter( )
- 可以从序列中过滤出符合条件的元素,保存到一个新的序列中
- 参数:
- 1.函数,根据该函数来过滤序列(可迭代的结构)
- 2.需要过滤的序列(可迭代的结构)
- 返回值:
- 过滤后的新序列(可迭代的结构)
# 其他代码如上
print(fn(l,fn5))
print(filter(fn5, l))
# <filter object at 0x100710580>
# 注意,这里直接打印不出结果,可以使用list进行一个转换
print(list(filter(fn5, l)))
# [8, 6, 7, 12, 14, 15]
# [8, 6, 7, 12, 14, 15]