一:内置函数(续)
1,zip (拉链方法)
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回这些元组。如果各个迭代器的元素个数不一致,则返回的元组个数与最短的对象相同
l1 = [1,2,3,] l2 = ['a','b','c',5] l3 = ('*','**',(1,2,3)) for i in zip(l1,l2,l3): print(i) # (1, 'a', '*') # (2, 'b', '**') # (3, 'c', (1, 2, 3))
2,filter (过滤),通过你的函数,过滤一个可迭代对象
def func(x): return x % 2 == 0 ret = filter(func,[1,2,3,4,5,6,7]) print(ret) for i in ret: print(i)
3,map 会根据提供的函数对指定序列做映射
def square(x): # 计算平方数 return x ** 2 ret=map(square, [1, 2, 3, 4, 5]) # 计算列表各个元素的平方 print(ret) for i in ret: print(i)
二:匿名函数
定义匿名函数的关键字为lambda,其格式为:函数名 = lambda 参数 :返回值,它是为了解决那些功能很简单的需求而设计的一句话函数。
#这段代码 def func(n): return n**n print(func(10)) #换成匿名函数 func = lambda n:n**n print(func(10))
ps:
1,参数可以有多个,用逗号隔开;
2,匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值;
3,返回值和正常的函数一样可以是任意数据类型;
4,可以看出,匿名函数并不是真的不能有名字,匿名函数的调用和正常函数的调用一样。
三:匿名函数和内置函数应用举例
dic={'k1':10,'k2':100,'k3':30} print(dic[max(dic,key=lambda k:dic[k])]) res = map(lambda x:x**2,[1,5,7,4,8]) for i in res: print(i) res = filter(lambda x:x>10,[5,8,11,9,15]) for i in res: print(i)