1. 看代码分析结果
func_list = []

for i in range(10):
func_list.append(lambda :i) v1 = func_list[0]()
v2 = func_list[5]()
print(v1,v2) # 9 9 i的最终指向
  1. 看代码分析结果
func_list = []

for i in range(10):
func_list.append(lambda x:x+i) v1 = func_list[0](2)
v2 = func_list[5](1)
print(v1,v2) # 11 10
  1. 看代码分析结果
func_list = []

for i in range(10):
func_list.append(lambda x:x+i) for i in range(0,len(func_list)):
result = func_list[i](i)
print(result)
'''
0 2 4 ... ... 18
'''
  1. 看代码写结果(面试题):
def func(name):
v = lambda x:x+name
return v v1 = func('太白') # lambda内存地址
v2 = func('alex') # lambda内存地址
v3 = v1('银角') # 银角太白
v4 = v2('金角') # 金角alex
print(v1,v2,v3,v4)
  1. 看代码写结果【面试题】
result = []
for i in range(10):
func = lambda : i # 注意:函数不执行,内部代码不会执行。
result.append(func) print(i) # 9
print(result) # 列表中是10个元素,对应的lambda的内存地址
v1 = result[0]()
v2 = result[9]()
print(v1,v2) # 9 9
  1. 看代码分析结果【面试题】
def func(num):
def inner():
print(num)
return inner result = []
for i in range(10):
f = func(i)
result.append(f) print(i) # 9
print(result) # 返回一个列表,里面是是个inner函数的内存地址
v1 = result[0]() # 0
v2 = result[9]() # 9
# 闭包思想解决这个问题
print(v1,v2) # 由于inner函数没有返回值,所以为None,None
  1. 看代码写结果【新浪微博面试题】

    def func():
    for num in range(10):
    pass
    v4 = [lambda :num+10,lambda :num+100,lambda :num+100,]
    result1 = v4[1]()
    result2 = v4[2]()
    print(result1,result2)
    func() # 109 109
  2. 请编写一个函数实现将IP地址转换成一个整数。【面试题,较难,可以先做其他题】

    如 10.3.9.12 转换规则为二进制:
    10 00001010
    3 00000011
    9 00001001
    12 00001100
    再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
    # 方法一:
    def ip(ip_addr):
    ip_list = ip_addr.split('.')
    num = ''
    for i in ip_list:
    i = int(i)
    num = num + format(i,'08b')
    return int(num,2)
    ip('10.3.9.12') # 方法二:
    def ip(ip_addr):
    return int(''.join([format(int(i),'08b') for i in ip_addr.strip().split('.')]),2) print(ip('10.3.9.12'))
  3. 都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出):

    1. 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb

    ​ name=[‘oldboy’,'alex','wusir']


name=['oldboy','alex','wusir']

l = list(map(lambda x:x+'_sb',name))

print(l)

   

   2. 用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾  

     l =  [{'name':'alex'},{'name':'y'}]

l=[{'name':'alex'},{'name':'y'}]

print(list(map(lambda x:x['name']+'_sb',l)))

   

   3. 用filter来处理,得到股票价格大于20的股票名字

   shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
}

  # print(list(filter(lambda x:shares[x] > 20,shares)))
   

   4. 有下面字典,得到购买每只股票的总价格,并放在一个迭代器中结果:list一下[9110.0, 27161.0,......]

  portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}]
# print(list(map(lambda x:x['shares']*x['price'],portfolio)))

​ 5. 还是上面的字典,用filter过滤出单价大于100的股票。

for i in filter(lambda x:x['price'] > 100, portfolio):

print(i)



6. 有下列三种数据类型,

l1 = [1,2,3,4,5,6]

l2 = ['oldboy','alex','wusir','太白','日天']

tu = ('','','','****')


​ 写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。) [(3, 'wusir', ''), (4, '太白', '*******')]这样的数据。

for i in filter(lambda x:x[0] > 2 and len(x[2]) >= 4,zip(l1,l2,tu)):

print(i)


​ 7. 有如下数据类型(**实战题**):

l1 = [ {'sales_volumn': 0},

{'sales_volumn': 108},

{'sales_volumn': 337},

{'sales_volumn': 475},

{'sales_volumn': 396},

{'sales_volumn': 172},

{'sales_volumn': 9},

{'sales_volumn': 58}, 

{'sales_volumn': 272}, 

{'sales_volumn': 456}, 

{'sales_volumn': 440},

{'sales_volumn': 239}]

​ 将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。

print(sorted(l1,key=lambda x:x['sales_volumn']))


10. 求结果(**面试题**)

v = [lambda :x for x in range(10)]

print(v) # 返回一个列表里面有个10个lambda函数的内存地址

print(v[0]) # 一个lambda函数的内存地址

print(v0) # 9


11. 求结果(**面试题**)

v = (lambda :x for x in range(10))

print(v) # 内存地址

print(v[0]) # 报错

print(v0) # 报错

print(next(v)) # lambda内存地址

print(next(v)()) # 执行下一个lambda 返回1


12. map(str,[1,2,3,4,5,6,7,8,9])输出是什么? (**面试题**) ```
返回一个内存地址 ``` 13. 求结果:(**面试题,比较难,先做其他题**)

def num():

return [lambda x:i*x for i in range(4)]

print([m(2)for m in num()])

[6, 6, 6, 6]


14. 有一个数组[3,4,1,2,5,6,6,5,4,33]请写一个函数,找出该数组中没有重复的数 的总和(上面数据的么有重复的总和为1+2=3)(**面试题**)

def func(alist):

return sum([i for i in alist if alist.count(i) == 1])

print(func([3,4,1,2,5,6,6,5,4,3,3]))


15. 写一个函数完成三次登陆功能: - 用户的用户名密码从一个文件register中取出。 - register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。 - 完成三次验证,三次验证不成功则登录失败,登录失败返回False。 - 登陆成功返回True。 ```
def get_dic_user_pwd():
with open('register', encoding='utf-8') as f1:
dic = {i.strip().split('|')[0]: i.strip().split('|')[1] for i in f1}
return dic def login(dic_user_pwd):
i = 0
dic = dic_user_pwd()
while i < 3:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if username in dic and dic[username] == password:
print('登录成功')
return True
else:
print('用户名密码错误,请重新登录')
i += 1 login(get_dic_user_pwd) ``` 16. 再写一个函数完成注册功能: - 用户输入用户名密码注册。
- 注册时要验证(文件regsiter中)用户名是否存在,如果存在则让其重新输入用户名,如果不存在,则注册成功。 - 注册成功后,将注册成功的用户名,密码写入regsiter文件,并以 | 隔开。 - 注册成功后,返回True,否则返回False。 ```
def get_dic_user_pwd():
with open('register', encoding='utf-8') as f1:
dic = {i.strip().split('|')[0]: i.strip().split('|')[1] for i in f1}
return dic def register(dic_user_pwd):
dic = dic_user_pwd()
username = input('请输入您要注册的用户名:').strip()
password = input('请输入注册密码密码:').strip()
if username not in dic:
with open('register',encoding='utf-8',mode='a') as f1:
f1.write(f'\n{username}|{password}')
return True
return False register(get_dic_user_pwd) ``` 17. 用完成一个员工信息表的增删功能(**选做题,有时间做,没时间周末做**)。 文件存储格式如下: id,name,age,phone,job 1,Alex,22,13651054608,IT 2,太白,23,13304320533,Tearcher 3,nezha,25,1333235322,IT 现在要让你实现两个功能: 第一个功能是实现给文件增加数据,用户通过输入姓名,年龄,电话,工作,给原文件增加数据(增加的数据默认追加到原数据最后一行的下一行),但id要实现自增(id自增有些难度,id是不需要用户输入的但是必须按照顺序增加)。 第二个功能是实现给原文件删除数据,用户只需输入id,则将原文件对应的这一条数据删除(删除后下面的id不变,比如此时你输入1,则将第一条数据删除,但是下面所有数据的id值不变及太白,nezha的 id不变)。

自己做!

最新文章

  1. CodeSimth - .Net Framework Data Provider 可能没有安装。解决方法
  2. Android启动icon切图大小
  3. CCProxy二级代理上网设置
  4. 翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器
  5. 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
  6. 获取经纬度 CLLocation
  7. Mysql双机热备配置(超详细多图版)
  8. Python笔记(十一):多线程
  9. ROS:使用Qt Creator创建GUI程序(一)
  10. libraries\include\boost-1_61\boost/regex/v4/perl_matcher.hpp(362): error C2292: &#39;boost::re_detail_106100::perl_matcher&lt;const char *,std::allocator&lt;boost::sub_match&lt;const char *&gt;&gt;,boost::regex_traits&lt;c
  11. 《Redis 命令操作》
  12. 并发之痛 Thread,Goroutine,Actor
  13. [原创]浅谈移动互联网App兼容性测试
  14. Cobbler安装CentOS7系统时报错 line 286: No space left on device
  15. MySQL数据库导入错误:ERROR 1064 (42000) 和 ERROR at line xx: Unknown command &#39;\Z&#39;.
  16. python之demo2----改编自python官方提供的turtle_yinyang.py画阴阳的demo
  17. ubuntu for win10 里运行apache+php
  18. Android.mk文件简单分析
  19. saltstack进阶
  20. js中关于array的常用方法

热门文章

  1. Flutter起步之安装
  2. 51nod1113【矩阵快速幂】
  3. ue4学习资料
  4. spring-eureka 源码解读----为什么一个服务最多两分钟被其他服务感知
  5. IT兄弟连 JavaWeb教程 经典案例
  6. 【TIDB】4、业界使用情况
  7. java基础第六篇之常用思想、封装、继承和多态
  8. VMware workstation 14 安装 iOS虚拟机
  9. 字符串split函数
  10. 桥接设计模式(Bridge)