查看上一节:初识高阶函数
过滤器filter函数
首先打开官网,找到Library Reference,点击打开:
找到build in Functions:
在这里面找到filter()
filter就是一个过滤器的意思。filter()可以从序列中过滤出符合条件的元素,保存到一个新的序列中。
参数:
1.函数,根据该函数来过滤序列(可迭代的结构)
2.需要过滤的序列(可迭代的结构)
返回值:
过滤后的新序列(可迭代的结构)
变换上节课的示例:
# 创建一个列表
l = [1,2,3,4,5,6,7,8,9,10]
# 这个函数可以将3的倍数取出
def fn4(i):
if i % 3 == 0 :
return True
return False
def fn(func , lst) :# 定义高阶函数fn
# 创建一个新列表
new_list = []
# 对列表进行筛选
for n in lst :
new_list.append(n)
# 返回新列表
return new_list
print(list(filter(fn4 , l)))
执行结果为:
可以看到此时打印的结果还是3的倍数。
总结:
fn4是作为参数传递进filter()函数中, 而fn4实际上只有一个作用,就是作为filter()的参数,filter()调用完毕以后,fn4就已经没用了。
lambda函数
但是这样并不推荐使用,接下来介绍一种新的函数:匿名函数(也叫 lambda )(语法糖)
lambda函数表达式专门用来创建一些简单的函数,他是函数创建的又一种方式。
语法:lambda 参数列表 : 返回值
匿名函数一般都是作为参数使用,其他地方一般不会使用。用于简单的函数,复杂的不建议使用。
计算两数之和:
print((lambda a,b:a+b)(10,20))
执行结果为:
一般是不这么使用的,这里只是介绍一下lambda函数的用法。
还有一种用法,可以将匿名函数赋值给一个变量:
# 3的倍数
r=filter(lambda i : i % 3==0,l)
print(r)
而且在这里只需要调整lambda里面的返回值内容即可,不需要另外构建函数。
map函数
可遍历可迭代对象的所有元素做指定的操作,然后将其添加到一个新的列表中返回。
示例:将列表中的元素都加1
# 创建一个列表
l = [1,2,3,4,5,6,7,8,9,10]
r=map(lambda i : i+1,l)
print(list(r))
执行结果为:
点击查看配套视频教程
获取更多内容,请订阅Python学习站官方技术圈!