内置函数(二)练习

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. springboot aop + logback + 统一异常处理 打印日志

    1.src/resources路径下新建logback.xml 控制台彩色日志打印 info日志和异常日志分不同文件存储 每天自动生成日志 结合myibatis方便日志打印(debug模式) < ...

  2. R语言学习——矩阵

    > #矩阵是一个二维数组,每个元素都拥有相同的模式(数值型.字符型或者逻辑型).通过matrix()创建,一般使用格式为:mymatrix<-matrix(vector,nrow=numb ...

  3. TNS-12535/12606 and ORA-3136 on Connection to Database (Doc ID 2313573.1)

    今天遇到一问题 telnet 都是通的,但是两台数据库服务器还是无法 sqlplus 连接 ,最后发现 两台服务器的 mtu 值不同,其中一台为 1500 一台为9000, 以前只是认为 telnet ...

  4. MSIL学习------从HelloWorld开始

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3889z1y72b28 ...

  5. 一、TensorFlow初探

    目录 计算模型 数据模型 运行模型 TensorFlow及神经网络 import tensorflow as tf a = tf.constant([1.0, 2.0], name='a', dtyp ...

  6. Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page

    Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了很多新的特性和新的功能,其中Razor Page引起我的关注,作为web ...

  7. python之configparser模块详解--小白博客

    configparse模块 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似 ...

  8. 599. Minimum Index Sum of Two Lists(easy)

    Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...

  9. 阿里云 轻量应用服务器(LAMP) 使用日志记录

    phpStudy(PHP运行环境一键安装包) https://www.jb51.net/softs/182860.html 0:PHP开发工具 https://netbeans.org/downloa ...

  10. Pyspark 使用 Spark Udf 的一些经验

    起初开始写一些 udf 的时候感觉有一些奇怪,在 spark 的计算中,一般通过转换(Transformation) 在不触发计算(Action) 的情况下就行一些预处理.udf 就是这样一个好用的东 ...