#匿名函数和内置函数
#匿名函数定义:为了解决那些功能很简单的需求而设计的一句话函数 lambda 一行必须写完
lxx=lambda x,y:x+y
print(lxx(1,2))
#匿名函数真的可以匿名
#练习: 求最大的key值是
dic={'x':1,'y':3}
# def func(key):
# return dir[key]
print(max(dic,key=lambda k:dic[k]))#未使用函数名也可以调用
#可以用到的内置函数函数有:max,min,sorted,filter(开始的个数和结束的个数不一样) map
#面试题
#1
d=lambda p:p*2
t=lambda p:p*3
x=2
x=d(x)
x=t(x)
x=d(x)
print(x) #24
#现在有两个元组((‘a'),('b') ) ,(('c'),('d')) 请使用python中的匿名函数生成列表[{'a':'c'},{'b','d'}]
x1=(('a'),('b'))
x2=(('c'),('d')) #可以使用内置函数zip
x3=(zip(x1,x2))
# def func(tup):
# return {tup[0]:tup[1]} 保险起见先写出函数再转化为匿名函数
# x4=map(func,x3)
x4=map(lambda tup:{tup[0]:tup[1]},x3)
x5=list(x4)
print(x5)
# for i in x4:
# print(i) #再把元组弄出字典就好了
#******************************一句话实现
print(list(map(lambda tup:{tup[0]:tup[1]},zip(x1,x2))))
#第三题:以下代码的输出是什么
def lxx():
return [lambda x:i*x for i in range(4)] #应该想到生成器表达式
# return [lambda x:i*x ,lambda x:i*x, lambda x:i*x ,lambda x:i*x ]
print([m(2) for m in lxx()])
#结果:[6,6,6,6]
内置函数:
#55个
#带key的有:map,max,filter,sorted,min
其他:input,print,type,hash,open,import,dir
str类型的代码执行:eval,exec
数字:bool,int,float,abs,divmod,min,max,sum,round,pow
序列--列表和元祖相关的:list,tuple
序列--字符串相关的:str,bytes,repr
序列:reversed,slice
数据集合--字典和集合:dect,set,frozenset
数据集合:len,sorted,enumerate,zip,filter,map