内置函数(二)练习
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] #请修改 multipliers 的定义来产生期望的结果。 def multipliers(): return (lambda x:i*x for i in range(4)) print([m(2) for m in multipliers()]) #结果 [0, 2, 4, 6]
继续阅读与本文标签相同的文章
-
日志服务数据加工最佳实践: 字符串动态键值对的提取
2026-05-19栏目: 教程
-
日志服务数据加工最佳实践: 从其他logstore拉取数据做富化
2026-05-19栏目: 教程
-
SpringBoot2 整合 FastDFS 中间件,实现文件分布式管理
2026-05-19栏目: 教程
-
如何实现一次编码,到处运行?新一代云端一体化探索
2026-05-19栏目: 教程
-
阿里有个组织超神秘,CEO们来了都要翻牌
2026-05-19栏目: 教程
