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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章