内置函数(二)练习

1、用 map 来处理字符串列表,把列表中所有人都变成 sb,比方 alex_sb
name=['alex','wupeiqi','yuanhao','nezha']

name=['alex','wupeiqi','yuanhao','nezha']
def func(n):
return n+'_sb' #ret = map(func,name) #这里的 ret 是一个迭代器,和可迭代的是不同的
#print(list(ret)) #迭代器 for 循环完了 就没有值了 可迭代的每次 for 循环都会生成一个迭代器 #print(list(map(func,name))) print(list(map(lambda n:n+'_sb',name))) #内置函数

2、filter 函数处理数字列表,将列表中所有的偶数筛选出来

num = [1,3,5,6,7,8]

def func2(i):
return i % 2 == 0 print(list(filter(func2,num)))
print(list(filter(lambda i:i % 2 == 0,num))) #lambda 嵌套 三元运算符
num = [1,3,5,6,7,8]
def func(x):
if x%2 == 0:
return True ret = filter(lambda x:True if x%2 == 0 else False,num) #以及列表推导式
print(list(ret))

3、随意写一个 20 行以上的文件,运行程序,先将内容读到内存中,用列表存储,接收用户输入页码,每页 5 条,仅输出当页的内容

with open('E:/py/log/file.txt',encoding='GBK')as f:
l = f.readlines()
pages,mod = divmod(len(l),5)
if mod != 0:
pages +=1
page_num = int(input('请输入页码:'))
if page_num < 0 or page_num == 0 or page_num > pages:
print('请输入1-'+str(pages)+'的页数')
elif page_num == pages and mod != 0:
for i in range(mod):
print(l[(page_num-1)*5+i].strip())
else:
for i in range(5):
print(l[(page_num-1)*5+i].strip())

4、如下,每个小字典的 name 对应股票名字,shares 对应多少股,price 对应一股的价格

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}
]  
#4.1、计算购买每支股票的总价
ret = map(lambda dic:{dic['name']:round(dic['shares']*dic['price'],2)},portfolio)
print(list(ret)) # 4.2、用filter过滤出,单价大于100的股票有哪些
ret = filter(lambda p:p['name'] if p['price']>100 else False,portfolio)
print(list(ret)) ret = filter(lambda dic:True if dic['price'] > 100 else False,portfolio)
print(list(ret)) ret = filter(lambda dic:dic['price'] > 100,portfolio)
print(list(ret))

面试题

1、阅读代码,说出输出结果

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)

2、现有两个元组 (('a'),('b')),(('c'),('d')),请使用 python 中匿名函数,生成列表 [{'a':'c'},{'b':'d'}]

# max min sorted filter map
# 匿名函数 == 内置函数,因为匿名函数往往与内置函数一起使用 ret = zip((('a'),('b')),(('c'),('d')))
res = map(lambda t:{t[0]:t[1]},ret)
print(list(res))

3、以下代码的输出是什么?请给出答案并解释

def multipliers():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
#结果 [6, 6, 6, 6] '''
原理:
lambda x: x*i 为内层(嵌)函数,他的命名空间中没有 i
所以运行时会向外层函数(这儿是列表解析式函数 [ ])的命名空间中请求 i
而当列表解析式运行时,列表解析式命名空间中的 i 经过循环依次变化为 0-->1-->2-->3 最后固定为 3 ,
所以当 lambda x: x*i 内层函数运行时,去外层函数获取 i 时,每次都只能获取到 3 解决办法:变闭包作用域为局部作用域
给内层函数 lambda x:x*i 增加参数,命名空间中有了用来存储每次的 i,
即:[lambda x, i=i: x*i for i in range(4)] 这样每一次,内部循环生成一个lambda 函数时
都会把 --i-- 作为默认参数传入 lambda 的命名空间
'''
#请修改 multipliers 的定义来产生期望的结果。
def multipliers():
return (lambda x:i*x for i in range(4))
print([m(2) for m in multipliers()])
#结果 [0, 2, 4, 6] def multipliers():
return [lambda x,i=i:i*x for i in range(4)]
print([m(2) for m in multipliers()])

day 16 - 2 内置函数(二)练习的更多相关文章

  1. python---day14( 内置函数二)

    内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...

  2. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  3. day 16 - 1 内置函数(二)

    内置函数(二) reversed()  返回一个反向的迭代器 k = [1,2,3,4,5] k.reverse() #反转 print(k) k = [1,2,3,4,5] k2 = reverse ...

  4. python 内置函数(二) 进阶函数 递归内容及二分法查找 知识点

    1,lambda:  匿名函数 2.sorgted()  排序函数 3,filter()   过滤函数 筛选 4,map()  映射函数 5.递归 6.二分法 一. 匿名函数: lambda lamb ...

  5. Python入门-内置函数二

    看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用 ...

  6. 内置函数二: map sorted filter

    -----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...

  7. day16:内置函数二

    1,大作业,yield 返回之后可以对数据进行处理了就,注意函数的解耦,每一个小功能写成一个函数,增强可读性,写之前自己要先把整体功能分块,先做什么,在做什么 # 现在需要对这个员工信息文件进行增删改 ...

  8. Python内置函数二 (递归函数,匿名函数,二分法)

    匿名函数 lambda() 语法: lambad  参数 : 返回值 def func(a,b): return a * b print(func(2,5)) a = lambda a ,b : a* ...

  9. 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

    1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...

随机推荐

  1. 数据库的设计:深入理解 Realm 的多线程处理机制

    你已经阅读过 Realm 关于线程的基础知识.你已经知道了在处理多线程的时候你不需要关心太多东西了,因为强大的 Realm 会帮你处理好这些,但是你还是很想知道更多细节…… 你想知道在 Realm 的 ...

  2. 【模板】 $\text{K}$ 短路

    Tags 搜索.\(\text{A*}\).很酷很炫的算法 定义二元组\(\text{DIS(X,Now)}\)表示到达\(\text{X}\)点,路程是\(\text{Now}\): 反向\(\te ...

  3. linux目录1

    1.linux常用快捷键 2.linux命令之vmstat 3.linux命令之df 4.linux命令之netstat 5.linux命令之 tar 6.The authenticity of ho ...

  4. git完全cli指南之详细思维导图整理分享

    一直以来都觉得 在开发过程中 能用命令行的还是用命令行 能用快捷键的就要快捷键 前期可能要点学习成本 但是熟练后带来的好处还是非常可观的 所以一直坚持使用命令行的方式来使用git 基本上每个操作都能心 ...

  5. 解读 IoC 框架 InversifyJS

    原文链接 InversityJS 是一个 IoC 框架.IoC(Inversion of Control) 包括依赖注入(Dependency Injection) 和依赖查询(Dependency ...

  6. 老铁啊,我同你讲, 这年头不会点 Git 真不行!!!

    -------------------------------------知识是一点一点的积累的, 也是一点一点的吸收的,没有人一口就能吃成一个胖子. 版本控制 说到版本控制,脑海里总会浮现大学毕业是 ...

  7. iOS 基础:Frames、Bounds 和 CGGeometry

    https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...

  8. 其它综合-使用Putty远程连接管理Linux实践

    使用Putty远程连接管理Linux实践 1.获取putty 获取 putty有很多方法,以下是我为大家提供的下载地址: 个人网盘地址,提取码:tz83 官方下载地址 解释: 官方下载的是 zip 压 ...

  9. Python——Django-form表单提交

    一.提交的注意事项 1. form不是from,所有获取用户输入的标签都应该放在form里面, input并且必须要有name属性 2. action属性控制往哪儿提交,method一般都设置成pos ...

  10. python之生成器和列表推导式

    一.生成器函数 1.生成器 就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.构建生成器的两种方式 1,生成 ...