国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python列表推導(dǎo)式與生成器表達(dá)式用法示例

2020-02-22 23:10:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(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ì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 攀枝花市| 石家庄市| 灵武市| 尉氏县| 九龙坡区| 金沙县| 长沙县| 海宁市| 射洪县| 望江县| 临颍县| 阳西县| 莱州市| 汝南县| 衡南县| 长沙县| 嵩明县| 涟源市| 五峰| 河南省| 鄯善县| 肥东县| 措勤县| 邹平县| 会理县| 二连浩特市| 武宣县| 临洮县| 桑日县| 奈曼旗| 精河县| 琼结县| 肥城市| 黎川县| 郓城县| 台江县| 彝良县| 延边| 灵台县| 盖州市| 敖汉旗|