使用python的列表解析以及函數(shù)式計算來簡化代碼

使用python的列表解析以及函數(shù)式計算來簡化代碼

ID:8908912

大小:16.04 KB

頁數(shù):6頁

時間:2018-04-11

使用python的列表解析以及函數(shù)式計算來簡化代碼_第1頁
使用python的列表解析以及函數(shù)式計算來簡化代碼_第2頁
使用python的列表解析以及函數(shù)式計算來簡化代碼_第3頁
使用python的列表解析以及函數(shù)式計算來簡化代碼_第4頁
使用python的列表解析以及函數(shù)式計算來簡化代碼_第5頁
資源描述:

《使用python的列表解析以及函數(shù)式計算來簡化代碼》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、使用python的列表解析以及函數(shù)式計算來簡化代碼在我們的代碼里經(jīng)常會和列表,元組,字典等數(shù)據(jù)結(jié)構(gòu)打交道,可以這么說,在很大程度上我們的代碼就是對這些數(shù)據(jù)結(jié)構(gòu)進行處理的過程,在Python中對列表,元組,字典等內(nèi)置的數(shù)據(jù)結(jié)構(gòu)的處理是很方便的事情,python借鑒了Lisp中的很多函數(shù)式計算的方法來處理列表,可以極大的簡化我們的代碼。set()將元組,列表轉(zhuǎn)化成沒有重復(fù)項的集合list()將集合,元組轉(zhuǎn)化成列表tuple()將集合,列表轉(zhuǎn)化成元組列表解析:[返回值for元素in列表if條件]比如[numfornuminxrange(100)ifnum%

2、2==0]返回0~99之間的偶數(shù)列表map(func,list):將list的每一個元素傳遞給func的函數(shù),這個函數(shù)有一個參數(shù),且返回一個值,map將每一次調(diào)用函數(shù)返回的值組成一個新列表返回filter(func,list):將list的每一個元素傳遞給func的函數(shù),這個函數(shù)有一個參數(shù),返回bool類型的值,filter將返回True的元素組成新列表返回reduce(func,list):將list的元素,挨個取出來和下一個元素通過func計算后將結(jié)果和再下一個元素繼續(xù)計算,比如ls=[1,3,5,7]reduce(lambdax,y:x+y,l

3、s)的計算過程就是1+3=4然后4+5得到結(jié)果9,再加7,以此類推,最后返回最終計算的結(jié)果下面我們用實際的例子來看如何運用這幾個函數(shù)1.列表去重如果有一個列表ls=[1,3,2,5,2,1,3,4,6]需要去掉其中重復(fù)的項,怎么做?最簡單的辦法?ls=list(set(ls))2.假如有列表:books=[?????{"name":"C#從入門到精通","price":23.7,"store":"卓越"},?????{"name":"ASP.NET高級編程","price":44.5,"store":"卓越"},?????{"name":"C#從入門

4、到精通","price":24.7,"store":"當當"},?????{"name":"ASP.NET高級編程","price":45.7,"store":"當當"},?????{"name":"C#從入門到精通","price":26.7,"store":"新華書店"},?????{"name":"ASP.NET高級編程","price":55.7,"store":"新華書店"},????]2.1求《ASP.NET高級編程》價格最便宜的店:storename=min([bforbinbooksifb['name']=="ASP.NET高級編程"

5、],key=lambdab:b.price)["store"]過程:先用列表解析取出《ASP.NET高級編程》的列表,通過min函數(shù),比較字典的price鍵獲取price最小的項2.2求在新華書店購買兩本書一樣一本要花的錢:price=sum([b['price']forbinbooksifb['store']=="新華書店"])2.3求列表中有那幾本書:booknames=list(set([b['name']forbinbooks]))2.4列表里當當?shù)臅即?折:books=map(lambdab:dict(name=b['name'],pri

6、ce=b['price']*0.5,store=b['store']),books)2.5《C#從入門到精通》的平均價格:avg=(lambdals:sum(ls)/len(ls))([b.priceforbinbooksifb['name']=="C#從入門到精通"])2.6求每本書的平均價格:book_avg=map(lambdabookname:dict(name=bookname,avg=(lambdals:sum(ls)/len(ls))([b.priceforbinbooksifb['name']==bookname])),list(se

7、t([b['name']forbinbooks])))這段代碼放在一行比較難看懂,但是格式化一下就很好懂了,構(gòu)建的過程如下:step1要求每本書的平均價格,首先要得到共有幾本書,方法見2.3,得到去重的書名列表list(set([b['name']forbinbooks]))#去重后的書名列表step2要求每一本書的均價,需要將計算均價的函數(shù)映射到每一本書上,于是map(???#計算均價的函數(shù),???list(set([b['name']forbinbooks]))#去重后的書名列表)step3加入計算單本書均價的函數(shù),參考2.5的方法,由于只用一行

8、,所以用lambda來搞定:func=lambdabookname:(lambdals:sum(ls)/le

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。