内置函数 匿名函数 面试题
内置函数思维导图
https://www.processon.com/view/link/59b0fb24e4b00e6de9137ba2
匿名函数
lambda 参数,参数 : 返回值
一句话的python
- 三元运算
- 各种推导式、生成器表达式
- lambda表达式
def calc(n,m):
return n**n
print(calc(10))
calc2 = lambda n,m : n**m
my_max = lambda n,m : n if n>m else m #返回大的值
print(calc2(10,2))
print(my_max(10,2))
用max找字典值最大的
dic={'k1':10,'k2':100,'k3':30}
print(max(dic)) #拿key比较
print(max(dic,key=lambda k:dic[k])) #拿value比较, 返回最大值的键
用map求列表元素的平方,注意map返回的是一个迭代器
def func(n):return n**2
for i in map(func,[1,5,7,4,6]):
print(i)
for i in map(lambda n:n**2,[1,5,7,4,6]):
print(i)
用filter过滤大于十的数,注意filter返回的是一个迭代器
def func(n):
if n > 10:
return True
for i in filter(func,[12,213,341,2,1,2]):
print(i)
for i in filter(lambda n: n>10 ,[12,213,341,2,1,2]):
print(i)
面试题:::现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
t1 = (('a'),('b'))
t2 = (('c'),('d'))
#map filter sorted max min
for i in zip(t1,t2):
print(i)
print(list(map(lambda t:{t[0]:t[1]} ,zip(t1,t2)))) #用map方法
print([{i[0]:i[1]} for i in zip(t1,t2)]) #用列表推导式
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)] #用lambda函数
print(test(t1,t2))
面试题: 下面程序的输出结果是
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x) # x = 4
x = t(x) # x = 12
x = d(x) # x = 24
print(x)
面试题:>>>以下代码的输出是什么?请给出答案并解释。
def multipliers():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
def multipliers():
# new_l = []
# for i in range(4):
# def func(x):
# return x*i
# new_l.append(func)
# return new_l
return [lambda x: i * x for i in range(4)] #6,6,6,6
# i = 0
# [func]
# i = 1
# [func,func]
# i = 2
# [func,func,func]
# i = 3 #i最后就是3
# [func,func,func,func]
# for func in multipliers():
# func(2)
print([m(2) for m in multipliers()])
结果打印[6,6,6,6]
2.请修改multipliers的定义来产生期望的结果。
print((m(2) for m in multipliers()))
#把列表推导式换成生成器表达式就可以了 输出[0,2,4,6]
既然选择了远方,便是风雨兼程...