内置函数 匿名函数 面试题

内置函数思维导图

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]

 

  

posted @ 2017-09-08 17:53  选择远方,风雨兼程。  阅读(287)  评论(0编辑  收藏  举报