Python列表推導式與生成器表達式用法示例
本文實例講述了Python列表推導式與生成器表達式用法。分享給大家供大家參考,具體如下:
和列表一樣,列表推導式也采用方括號[]表示,并且用到了一個簡寫版的for循環(huán),第一部分是一個生成結(jié)果列表元素的表達式,第二部分是一個輸入表達式上的循環(huán)。閱讀理解列表表達式的推薦做法是先從里面的for循環(huán)開始,向右查看是否有if條件,然后將推導式開始的那個表達式映射到每一個匹配的元素上去。
>>> even_numbers = [x for x in range(10) if x%2 == 0] >>> even_numbers [0,2,4,6,8]
以上例子展示了使用if語句來過濾元素。
Python還支持另外一種和列表表達式類似的結(jié)構(gòu),叫做生成器表達式(generator expression),除了它有一種稱之為“惰性計算”的特點以外,它和列表推導式的用法基本一致。它的工作方式是每次處理一個對象,而不是一口氣處理和構(gòu)造整個數(shù)據(jù)結(jié)構(gòu),這樣做的潛在優(yōu)點是可以節(jié)省大量的內(nèi)存。
>>> even_numbers = (x for x in range(10000) if x%2 == 0) >>> even_numbers <generator object at 0x....>
在處理大量的數(shù)據(jù)是,最好考慮生成器表達式而不是列表推導式。
另一個列表推導式和生成器表達式的例子是:
>>> data = ['abc','def','I use python', 'hong201'] >>> sum([len(word) for word in data]) 25 >>> sum(len(word) for word in data) 25
enumerate()
是一個同時能讓你迭代和計數(shù)的內(nèi)置函數(shù),而for循環(huán)自身只能迭代而沒辦法計數(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入門與進階經(jīng)典教程》及《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python遍歷pandas數(shù)據(jù)方法總結(jié)
本篇文章給大家詳細介紹了Python中遍歷pandas數(shù)據(jù)方法以及相關(guān)注意點,對此有興趣的朋友參考學習下吧。2018-02-02python 利用openpyxl讀取Excel表格中指定的行或列教程
這篇文章主要介紹了python 利用openpyxl讀取Excel表格中指定的行或列教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02python使用協(xié)程實現(xiàn)并發(fā)操作的方法詳解
這篇文章主要介紹了python使用協(xié)程實現(xiàn)并發(fā)操作的方法,結(jié)合實例形式詳細分析了Python協(xié)程的原理及使用Gevent實現(xiàn)協(xié)程操作的相關(guān)技巧與操作注意事項,需要的朋友可以參考下2019-12-12Python調(diào)用兩個機器人聊天的實戰(zhàn)
本文主要介紹了Python調(diào)用兩個機器人聊天,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09