lambda匿名函数
lambda匿名函数的使用规则一般是
lambda 参数:返回值
lambda匿名函数存于内存中,若要执行,可以选择赋值,然后通过()执行
第二种执行方式为将lambda表达式用()括起然后接()放入参数
需要注意,lambda函数的返回值只能为单一值,不能做for循环或if判断之类的写法
赋值后执行
fuc1 = lambda x : x**2
print(fuc1)
print(fuc1(2))
# <function <lambda> at 0x100bda2a0>
# 4
直接执行
print((lambda x: x ** 2)(2))
# 4
可以看到直接打印fuc1输出的为匿名函数所在的内存地址,通过()执行,会执行该内存地址的代码
函数演示
lambda接受不定长参数演示
fuc1 = lambda *args : print(args)
fuc1([1,2,3])
fuc2 = lambda **kwargs : print(kwargs)
fuc2(name='Jack',gender='male')
# ([1, 2, 3],)
# {'name': 'Jack', 'gender': 'male'}
lambda返回三目运算符演示
虽然lambda函数返回值不支持if判断,但是可以使用三目运算符作为返回值,因为三目运算符会被视为一个整体
print((lambda x: x if x>1 else 1)(2))
print((lambda x: x if x>1 else 1)(0))
# 2
# 1
map()函数
map()函数用于将一个可迭代容器进行迭代,每次将一个值送入一个函数进行执行
参数有两个,第一个为函数名,第二个为可迭代对象
返回值为一个可迭代的map对象
def More_than_one(x):
if x>1:
return True
else:
return False
list1 = [-1,0,1,2]
map1 = map(More_than_one, list1)
print(map1)
print(list(map1))
# <map object at 0x139e444c0>
# [False, False, False, True]
上述使用的是用传统函数作为参数,用于迭代判断可迭代对象中的元素是否大于一,同样的功能也可将传统函数换为lambda匿名函数
list1 = [-1,0,1,2]
map1 = map(lambda x : True if x >1 else False, list1)
print(map1)
print(list(map1))
# <map object at 0x16bd080d0>
# [False, False, False, True]