常见面试题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()))
# #将字典的值求出
View Code

 

posted @ 2019-03-20 15:49  我的IT007  阅读(37)  评论(0)    收藏  举报