学习视频:https://www.bilibili.com/video/BV1SE411N7Hi?p=62
作业地址:https://gitee.com/old_boy_education_python_28/teaching_plan/issues/I16IAW
以下内容仅供自己学习使用,侵删
#!/usr/bin/env python # -*- coding:utf-8 -*- # 1.都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出): # # 用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾 l=[{'name':'alex'},{'name':'y'}] l2=[] print(list(map(lambda x:x['name']+'sb',l))) #['alexsb', 'ysb'] # 2)用filter来处理,得到股票价格大于20的股票名字 # shares={ 'IBM':36.6, 'Lenovo':23.2, 'oldboy':21.2, 'ocean':10.2, } print(list(filter(lambda x:shares[x]>20,shares))) #['IBM', 'Lenovo', 'oldboy'] # 用filter过滤出单价大于100的股票。 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(filter(lambda x:x['price']>100,portfolio))) #[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}] # 4)有下列三种数据类型, # l1 = [1,2,3,4,5,6] l2 = ['oldboy','alex','wusir','太白','日天'] tu = ('**','***','****','*******') # 写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。) print(list(filter(lambda x:x[0]>2 and len(x[-1])>3,zip(l1,l2,tu)))) # [(3, 'wusir', '****'), (4, '太白', '*******')] # 这样的数据。 # # 5)有如下数据类型(实战题): # 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大小进行排序,形成一个新的列表。 l2=sorted(l1,key=lambda x:x['sales_volumn']) print(l2) # 2.过滤掉长度小于3的字符串列表 lst = ["alex","wusir","太白","宝元"] print(list(filter(lambda x:len(x)>=3,lst))) # 3.有如下数据结构,通过过滤掉年龄大于16岁的字典 # lst = [{'id':1,'name':'alex','age':18}, {'id':1,'name':'wusir','age':17}, {'id':1,'name':'taibai','age':16},] print(list(filter(lambda x:x['age']<=16,lst))) # 4.有如下列表,按照元素的长度进行升序 # lst = ['天龙八部','西游记','红楼梦','三国演义'] print(sorted(lst,key=len)) # 5.有如下数据,按照元素的年龄进行升序 # lst = [{'id':1,'name':'alex','age':18}, {'id':2,'name':'wusir','age':17}, {'id':3,'name':'taibai','age':16},] print(sorted(lst,key=lambda x:x['age'])) # 6.看代码叙说,两种方式的区别 # lst = [1,2,3,5,9,12,4] lst.reverse()#在本地修改 print(lst) print(list(reversed(lst)))#开辟新空间,不修改元数据 # 7.list(map(str,[1,2,3,4,5,6,7,8,9]))输出是什么? (面试题) #输出1-9的字符串 # 8.有一个数组[34,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中没有重复的数 # 的总和(上面数据的么有重复的总和为1+2+4+34=41)(面试题)、 #------自己写的…… #from functools import reduce # lst=[34,1,2,5,6,6,5,4,3,3] # dic={} # def func(x): # for i in x: # dic[i]=dic.get(i,0)+1 # return dic # def append(dic): # sum=0 # for i in dic.keys(): # if dic[i]==1: # sum+=i # return sum # dic=func(lst) # sum=append(dic) # print(sum) print("------老师写的----------") lst=[34,1,2,5,6,6,5,4,3,3] def foo(x): return lst.count(x)==1 #获取bool值 print(sum(filter(foo,lst)))#filter内部返回if func==true的值 print("--------老师写的----等同于-----此处膜拜大佬") print(sum(filter(lambda x:lst.count(x)==1,lst))) # def filter(foo,iter): # """ # # :param func: # :param iter: # :return: # """ # new_lst = [] # for i in iter: # # if func(i)==True:#foo(i) # new_lst.append(i) # return new_lst # filter(foo,lst)