01.- 函数 - 匿名函数
1.filter(fnuction,iterable) --> filter(函数,可迭代的) -->filter(函数,序列)
可以从序列当中过滤出符合条件的元素,保存到一个新的序列当中
参数一 : 传递函数 参数二 : 需要过滤的序列
返回值 过滤后新的序列
# 定义一个函数 可以将指定列表当中的所有偶数,保存到一个新的列表中返回
l = [1,2,3,4,5,6,7,8,9,10]
# 定义一个函数,用来检测一个任意的偶数
def fn2(i):
if i % 2 == 0:
return True
# 定义一个函数,用来检测指定数字是否大于5
def fn3(i):
if i > 5:
return True
return False
# 创建一个新的列表
new_list = []
# 定义一个函数
def fn4(i):
if i % 3 == 0:
return True
return False
def fn(func,lst): # 传一个变量 n
for n in lst:
# 判断 n 的奇偶
# if not fn2(n): # [2, 4, 6, 8, 10]
# if fn3(n): # [6, 7, 8, 9, 10]
if func(n): # [2, 4, 6, 8, 10]
new_list.append(n)
# 返回新的列表
return new_list
print(fn(fn4,l)) # [3, 6, 9]
# 当我们使用一个函数作为参数时,实际上是将指定的代码传递进了目标函数
print(filter(fn4,l)) # <filter object at 0x000002570D6966D8>
print(list(filter(fn4,l))) # [3, 6, 9]
2.lambda表达式
lambda函数表达式专门用来创建一些简单的函数,它是函数创建的另一种方式
语法 lambda 参数列表[a,b,c…] : 返回值
((lambda a,b : a+b)(10,20) 一般不这么写
print(fn5(123,456)) # 579
print(lambda a,b : a+b) # <function <lambda> at 0x00000130CEA1B2F0> 打印结果比一般的打印结果少个名称,所以才叫做匿名函数
print((lambda a,b : a+b)(10,20)) # 30 一般不这么写
def fn5(a,b):
return a + b
fn6 = lambda a,b: a+b
print(fn6(30,20)) # 50 一般这么写
3.lambda函数表达式的应用
l = [1,2,3,4,5,6,7,8,9,10]
# def fn(i):
# return i % 3 == 0
# lambda i : i % 3 == 0
r = filter(lambda i : i > 5,l)
print(