学习视频: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)