Python列表推導(dǎo)式與生成器表達(dá)式用法示例
本文實(shí)例講述了Python列表推導(dǎo)式與生成器表達(dá)式用法。分享給大家供大家參考,具體如下:
和列表一樣,列表推導(dǎo)式也采用方括號(hào)[]表示,并且用到了一個(gè)簡(jiǎn)寫(xiě)版的for循環(huán),第一部分是一個(gè)生成結(jié)果列表元素的表達(dá)式,第二部分是一個(gè)輸入表達(dá)式上的循環(huán)。閱讀理解列表表達(dá)式的推薦做法是先從里面的for循環(huán)開(kāi)始,向右查看是否有if條件,然后將推導(dǎo)式開(kāi)始的那個(gè)表達(dá)式映射到每一個(gè)匹配的元素上去。
>>> even_numbers = [x for x in range(10) if x%2 == 0] >>> even_numbers [0,2,4,6,8]
以上例子展示了使用if語(yǔ)句來(lái)過(guò)濾元素。
Python還支持另外一種和列表表達(dá)式類似的結(jié)構(gòu),叫做生成器表達(dá)式(generator expression),除了它有一種稱之為“惰性計(jì)算”的特點(diǎn)以外,它和列表推導(dǎo)式的用法基本一致。它的工作方式是每次處理一個(gè)對(duì)象,而不是一口氣處理和構(gòu)造整個(gè)數(shù)據(jù)結(jié)構(gòu),這樣做的潛在優(yōu)點(diǎn)是可以節(jié)省大量的內(nèi)存。
>>> even_numbers = (x for x in range(10000) if x%2 == 0) >>> even_numbers <generator object at 0x....>
在處理大量的數(shù)據(jù)是,最好考慮生成器表達(dá)式而不是列表推導(dǎo)式。
另一個(gè)列表推導(dǎo)式和生成器表達(dá)式的例子是:
>>> data = ['abc','def','I use python', 'hong201'] >>> sum([len(word) for word in data]) 25 >>> sum(len(word) for word in data) 25
enumerate()
是一個(gè)同時(shí)能讓你迭代和計(jì)數(shù)的內(nèi)置函數(shù),而for循環(huán)自身只能迭代而沒(méi)辦法計(jì)數(shù):
>>> data = [123,"abc",3.14] >>> for i in enumerate(data): ... print i ... (0, 123) (1, 'abc') (2, 3.14)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python列表(list)操作技巧總結(jié)》、《Python數(shù)組操作技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python函數(shù)使用技巧總結(jié)》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python中re.findall函數(shù)實(shí)例用法
在本篇文章里小編給大家整理了一篇關(guān)于python中re.findall函數(shù)實(shí)例用法相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-09-09Python中ModuleNotFoundError錯(cuò)誤的問(wèn)題解決
本文主要介紹了Python中ModuleNotFoundError錯(cuò)誤的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02分享Pytest fixture參數(shù)傳遞的幾種方式
這篇文章主要分享的是Pytest fixture參數(shù)傳遞的幾種方式,文章基于python的相關(guān)資料展開(kāi)對(duì)主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題
這篇文章主要介紹了淺談openpyxl庫(kù),遇到批量合并單元格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03jupyter?notebook?中使用ipython?魔法指令的詳細(xì)過(guò)程
在?Jupyter?Notebook?中,IPython?魔法指令為數(shù)據(jù)分析和探索提供了很多便利,這篇文章主要介紹了jupyter?notebook?中使用ipython?魔法指令的詳細(xì)過(guò)程,需要的朋友可以參考下2024-06-06pycharm 實(shí)現(xiàn)顯示project 選項(xiàng)卡的方法
今天小編就為大家分享一篇pycharm 實(shí)現(xiàn)顯示project 選項(xiàng)卡的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01