常见面试题1
lambda匿名函数 列表推导式
v = [lambda :x for x in range(10)] print(v) print(v[0]) print(v[0]())
[<function <listcomp>.<lambda> at 0x000001C95E5D98C8>, <function <listcomp>.<lambda> at 0x000001C95E5D9950>, <function <listcomp>.<lambda> at 0x000001C95E5D99D8>, <function <listcomp>.<lambda> at 0x000001C95E5D9A60>, <function <listcomp>.<lambda> at 0x000001C95E5D9AE8>, <function <listcomp>.<lambda> at 0x000001C95E5D9B70>, <function <listcomp>.<lambda> at 0x000001C95E5D9BF8>, <function <listcomp>.<lambda> at 0x000001C95E5D9C80>, <function <listcomp>.<lambda> at 0x000001C95E5D9D08>, <function <listcomp>.<lambda> at 0x000001C95E5D9D90>] <function <listcomp>.<lambda> at 0x000001C95E5D98C8> 9 1 是个匿名函数的内存地址 2第一个匿名函数 3求值(注意 x的指向已经发生变化) # for x in range(10): # def f(): # return x # # print(f)
生成器表达式
v = (lambda :x for x in range(10)) print(v) print(v[0]) print(v[0]()) print(next(v)) print(next(v)()) v = (lambda :x for x in range(10)) print(v) # print(v[0]) # print(v[0]()) print(next(v)) print(next(v)()) print(list(v))
它是一个生成器表达式 1显示生成器内存地址 2.生成器不能索引 3生成器不能通过索引求值 4(yield) 获得第一个匿名函数地址 5获得第二个函数 求值 6 列表显示全部匿名函数 <generator object <genexpr> at 0x0000021ECC511E08> <function <genexpr>.<lambda> at 0x0000021ECC5A98C8> 1 [<function <genexpr>.<lambda> at 0x0000021ECC5A98C8>, <function <genexpr>.<lambda> at 0x0000021ECC5A9950>, <function <genexpr>.<lambda> at 0x0000021ECC5A99D8>, <function <genexpr>.<lambda> at 0x0000021ECC5A9A60>, <function <genexpr>.<lambda> at 0x0000021ECC5A9AE8>, <function <genexpr>.<lambda> at 0x0000021ECC5A9B70>, <function <genexpr>.<lambda> at 0x0000021ECC5A9BF8>, <function <genexpr>.<lambda> at 0x0000021ECC5A9C80>]
列表拼接
有两个字符串列表,a和b,每个字符是由逗号分隔的一些字符,(升级题)尽量做得支持扩展 a = [ 'a,1', 'b,3,22', 'c,3,4' 'f,5' ] b=[ 'a,2', 'b,4', 'd,2' 'e,12' ] 按每个字符串的第一个值,合并a和b到c c = [ 'a,1,2', 'b,3,22,4', 'c,3,4', 'd,2', 'e,12', 'f,5' ]
a = [ 'a,1', 'b,3,22', 'c,3,4', 'f,5' ] b = [ 'a,2', 'b,4', 'd,2', 'e,12' ] dic={} for i in a: dic[i[0]]=i print(dic) for em in b: if dic.get(em[0]): dic[em[0]]+=(em[1:]) else: dic[em[0]]=em print(dic) print(list(dic.values())) # data={i[0]:i for i in a} # # print(data)#将a这个列表转化为字典 字典的键就是元素的第一个,值就是元素 # # for em in b: # if data.get(em[0]):#判断b中每一个元素的第一个位置在不在字典中 # data[em[0]]+=em[1:]#通过键找到值 然后将值与b相加 # else: # data[em[0]]=em # #键不在字典中,就直接添加一个键值对 # print(list(data.values())) # #将字典的值求出

浙公网安备 33010602011771号