python学习-day9-homework(匿名函数lambda,内置函数)

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值