一、匿名函数
定义:指的是一类无须定义标识符【函数名】的函数或者子程序。
在python中定义匿名函数使用lambda来进行定义。
语法:
lambda 参数列表: 表达式
注意:使用lambda表达式时,参数可以有多个,用逗号“,”分隔,但是表达式只能有一个,即只能返回一个值。而且也不能出现其他非表达式语句(如for或while)
特点:
1.lambda后面的跟的只是一个表达式,结构体比def的简单
2.参数列表可以有多个参数,参数与参数之间使用逗号隔开
3.无须写return,表达式的结果就是该表达式的返回值
4.常用于高阶函数
优点:
1.结构简单
2.匿名函数没有名字无须担心函数名的冲突。
匿名函数的调用:
将lambda表达式赋值给一个变量,通过调用变量来调用我们的匿名函数。
# 常规函数
def func1(a,b):
if a>b:
return a
else:
return b
print(func1(10,20))
# 匿名函数
func2 = lambda a,b: a if a>b else b
print(func2) # <function <lambda> at 0x00000000003C3E18>
print(type(func2)) # <class 'function'>
print(func2(10,20)) # 20
二、zip函数
zip(iter1,iter2,...)
功能:打包,将可迭代对象中对应位置的元素进行打包,
长度取决于最短的那个,返回zipobj打包好的对象,以迭代器的方式返回
list1 = [1,2,3,4]
list2 = ["a","b","c","d"]
zipobj1 = zip(list1,list2)
print(dict(zipobj1)) # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
list3 = [1,2,3,4]
list4 = ["a","b","c","d"]
list5 = ["a2","b2","c2"]
zipobj2 = zip(list3,list4,list5)
print(list(zipobj2)) # [(1, 'a', 'a2'), (2, 'b', 'b2'), (3, 'c', 'c2')]
zip(*zipobj)
解包,将之前打包的元素进行解包处理,以迭代器方式返回。
list1 = [1,2,3,4]
list2 = ["a","b","c","d"]
list3 = ["a2","b2","c2","d2"]
zipobj1 = zip(list1,list2,list3)
obj = zip(*zipobj1)
print(list(obj)) # [(1, 2, 3, 4), ('a', 'b', 'c', 'd'), ('a2', 'b2', 'c2', 'd2')]
list4 = [1,2,3,4]
list5 = ["a","b","c"]
list6 = ["a2","b2","c2","d2"]
zipobj2 = zip(list4,list4,list6)
obj = zip(*zipobj2)
print(list(obj)) # [(1, 2, 3), ('a', 'b', 'c'), ('a2', 'b2', 'c2')]