日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 列表推導和生成器表達式的使用

瀏覽:32日期:2022-06-28 16:27:27
序列

序列是指一組數據,按存放類型分為容器序列與扁平序列,按能否被修改分為不可變序列與可變序列。

容器序列與扁平序列

容器序列存放的是對象的引用,包括list、tuple、collections.deque。

扁平序列存放的是對象的值,包括str、bytes、bytearray、memoryview和array.array。

扁平序列的值是字符、字節和數值這種基礎類型。

不可變序列與可變序列

不可變序列,包括tuple、str、bytes。

可變序列,包括list、bytearray、array.array、collection.deque、memoryview。

下圖左邊是父類,右邊是子類,可以看出可變序列是從不可變序列繼承來的,擴展了可變方法:

python 列表推導和生成器表達式的使用

列表推導

Python語言魅力在于簡潔,這能從最常見的創建列表體現出來,比如我們想把字符串'abc'轉換成新列表['a', 'b', 'c'],常規寫法:

symbols = 'abc'codes = []for symbol in symbols: codes.append(symbol)print(codes) # ['a', 'b', 'c']

用到了for循環和列表append方法。實際上可以不用append方法,直接:

symbols = 'abc'codes = [symbol for symbol in symbols]

這叫做列表推導,是更加Pythonic的寫法。

無論是編寫效率還是可閱讀性,列表推導都更勝一籌,可以說是構建列表的快捷方式。但是不能濫用,通用原則是,如果列表推導的代碼超過了兩行,就要考慮用append了。這不是規定,完全可以憑借自我喜好來選擇。

笛卡爾積是指多個序列中元素所有組合,我們用列表推導來實現笛卡爾積:

colors = ['black', 'white']sizes = ['S', 'M', 'L']tshirts = [(color, size) for color in colors for size in sizes]

一行代碼搞定!Life is short,use Python,list comprehension is wonderful,amazing。

注意這行代碼有兩個for循環,等價于:

for color in colors: for size in sizes:

運行結果是:

[(’black’, ’S’), (’black’, ’M’), (’black’, ’L’), (’white’, ’S’), (’white’, ’M’), (’white’, ’L’)]

如果換一下順序:

[(color, size) for color in colors for size in sizes]

等價于:

for size in sizes: for color in colors:

運行結果是不同的,觀察第2個元素:

[(’black’, ’S’), (’white’, ’S’), (’black’, ’M’), (’white’, ’M’), (’black’, ’L’), (’white’, ’L’)]生成器表達式

一般接觸到生成器時,都要講yield關鍵字,看似有點復雜,然而卻很簡單,生成器就像列表推導一樣,只不過是用來生成其他類型序列的,比如元組:

symbols = 'abc'codes = (symbol for symbol in symbols)

它的語法非常簡單,把列表推導的中括號[]換成小括號(),就可以了。

語法相似,本質上卻有很大區別,我們試著用生成器表達式來實現笛卡爾積,看看會有什么變化:

colors = ['black', 'white']sizes = ['S', 'M', 'L']tshirts = ((color, size) for color in colors for size in sizes)

運行結果是:

<generator object <genexpr> at 0x000001FD57D2DB30>

generator object,結果是一個生成器對象。因為生成器表達式在每次迭代時才會逐個產出元素,所以這里的結果并不是已經創建好的元組。列表推導才會一次性產生新列表所有元素。

通過迭代把生成器表達式結果輸出:

for tshirt in tshirts: print(tshirt)

(’black’, ’S’)(’white’, ’S’)(’black’, ’M’)(’white’, ’M’)(’black’, ’L’)(’white’, ’L’)

生成器表達式可以提升程序性能,比如要計算兩個各有1000個元素的列表的笛卡爾積,生成器表達式可以幫忙省掉運行for循環的開銷,即一個包含100萬個元素的列表。

yield作用和return差不多,后面會講到。

Tips

本小節內容是我看《流暢的Python》第一遍時記錄的知識點:

Python標準庫用C實現了豐富的序列類型。 列表推導,就是指a = [x for x in something]這種寫法。 生成器表達式用于生成列表外的其他類型的序列,它跟列表推導的區別僅僅在于方括號換成圓括號,如b = tuple(x for x in something) 。 array.array(’I’, x for x in something) ,array構造方法的第一個參數指定了數組中數字的存儲方式。 for tshirt in [c, s for c in colors for s in sizes],列表推導會一次性生成這個列表,存儲在內存中,占用資源。for tshirt in (’%s %s’ for c in colors for s in sizes),生成器表達式只在循環時逐個產出元素,避免額外的內存占用,省掉了運行for循環的開銷。 小結

本文首先介紹了序列的概念,然后演示了Python常規騷操作——列表推導,最后引出了生成器表達式這個看似復雜實則簡單的語法。列表是可變的,它有個不可變的孿生兄弟,元組。

參考資料:

《流暢的Python》

以上就是python 列表推導和生成器表達式的使用的詳細內容,更多關于python 列表推導和生成器表達式的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜桃视频在线观看一区二区| 亚洲午夜av| 国产日产高清欧美一区二区三区| 欧美欧美黄在线二区| 97精品视频在线看| 99riav国产精品| 91麻豆精品激情在线观看最新| 国产精品一区二区免费福利视频| 97欧美在线视频| 久久aⅴ国产紧身牛仔裤| 国产精品羞羞答答在线观看| а√天堂8资源中文在线| 亚洲欧美不卡| 欧美极品中文字幕| 国产一区日韩欧美| 日本一区二区三区中文字幕| 国产精品大片免费观看| 色88888久久久久久影院| 三级一区在线视频先锋| 麻豆免费精品视频| 在线亚洲精品| 免费观看亚洲天堂| 视频一区欧美精品| 成人午夜毛片| 天堂久久一区| 亚洲91久久| 国产无遮挡裸体免费久久| 国产在线欧美| 国产精品久久国产愉拍| 欧美日韩精品一本二本三本| 国产探花在线精品一区二区| 欧美aa在线观看| 日韩精选在线| 99热精品久久| 麻豆视频一区| 亚洲免费观看高清完整版在线观| 在线看片福利| 国产欧美午夜| 久久不射中文字幕| 日韩精品一卡| 免费在线观看一区| 亚洲综合福利| 国产99久久久国产精品成人免费| 国产精品115| 在线国产精品一区| 三上悠亚国产精品一区二区三区| 亚洲影院天堂中文av色| 日韩精品首页| 欧美国产极品| 亚洲欧洲av| 免费久久精品| 成人影视亚洲图片在线| 欧美亚洲人成在线| 亚洲欧美视频| 欧美日韩水蜜桃| 日本精品黄色| 国产精品亚洲综合在线观看| 久久高清免费观看| 欧美日韩水蜜桃| 国产不卡人人| 麻豆精品99| 亚洲精品一区二区在线播放∴| 欧美日一区二区| 国产精品99一区二区三区| 国产欧美日韩精品一区二区免费| 鲁大师成人一区二区三区| 久久国产日本精品| 日韩欧美精品一区| 大香伊人久久精品一区二区| 欧美日韩一区二区三区不卡视频 | 久久99影视| 日韩欧美2区| 亚洲色图国产| 美女精品在线| 香蕉久久夜色精品国产| 高潮一区二区| 国产一区日韩| 久久精品国产久精国产| 久久99青青| 国产精品草草| 国产精品magnet| 国产伦精品一区二区三区视频| 日韩精品一二三| 免费视频一区二区| 蜜臀va亚洲va欧美va天堂| 国产亚洲精品v| 国产精品嫩草99av在线| 亚洲一区二区三区四区五区午夜 | 久久国产精品色av免费看| 在线观看一区| 视频一区视频二区中文| 视频一区中文字幕国产| 久久高清国产| 日韩中文字幕一区二区三区| 亚洲欧美日韩专区| 蜜桃视频一区二区三区| 亚洲免费专区| 91精品在线免费视频| 亚洲理论在线| 亚洲精品激情| 欧美永久精品| 欧美成人精品午夜一区二区| 久久的色偷偷| 久久免费视频66| 日韩免费高清| 精品欧美激情在线观看| 亚洲精品亚洲人成在线观看| 青青草精品视频| 国产精品qvod| 人人草在线视频| 午夜久久一区| 免费成人av在线播放| 日韩在线视频一区二区三区| 日韩成人精品一区二区三区| 日本欧美大码aⅴ在线播放| 国产精品欧美在线观看| 国产一区二区亚洲| 欧美日韩一区二区综合 | 中文在线中文资源| 久久亚洲国产| 蜜桃视频第一区免费观看| 欧美日韩在线精品一区二区三区激情综合 | 国产精品2区| 成人黄色av| 久久久人人人| 99国产精品私拍| 视频一区日韩| 久久精品国产精品亚洲毛片| 日韩中文视频| 蜜桃视频在线观看一区| 欧美一区精品| 四虎成人av| 亚洲少妇一区| 国产精品亚洲片在线播放| 中文字幕在线高清| 亚洲综合精品| 美女精品视频在线| 欧美日韩中文一区二区| 免费看精品久久片| 久久av免费| 久久理论电影| 日韩av中文在线观看| 国产盗摄——sm在线视频| 好看不卡的中文字幕| 欧美日韩一视频区二区| 久久久久国产精品一区二区| 亚洲综合色婷婷在线观看| 精品视频在线观看网站| 亚洲大全视频| 国产日产高清欧美一区二区三区 | 国产精品美女午夜爽爽| 福利一区视频| 国产精品婷婷| 精品精品99| 午夜一区在线| 日韩综合在线| 亚洲精品少妇| 久久夜夜操妹子| 91欧美日韩在线| 亚洲二区精品| 久久精品99国产精品日本| 国产在线|日韩| 日韩有吗在线观看| 久久蜜桃精品| 国产伦精品一区二区三区视频| 久久中文亚洲字幕| 欧美一区免费| 制服诱惑一区二区| 国产色播av在线| 日韩av中文字幕一区| 欧美一区三区| 久久国产精品免费一区二区三区| 美女亚洲一区| 精品黄色一级片| 日本亚洲欧美天堂免费| 伊人精品一区| 国产一区二区视频在线看| 日韩一区网站| 午夜国产精品视频| 国产高清不卡| 国产精品视频一区二区三区综合| 亚洲大片在线| 成人在线黄色| 欧美日韩一区二区三区不卡视频| re久久精品视频| 在线天堂资源www在线污| 国产精品一区二区三区四区在线观看| 日韩中文视频| 精品视频97| 国产调教一区二区三区| 久久香蕉精品| 久久国产电影| 国产99在线| 欧美黄色一区二区| 日韩欧乱色一区二区三区在线| 婷婷亚洲五月| 国产精品久久久久久久免费观看| 日本亚洲最大的色成网站www | 日本成人精品| 免费日韩av片|