婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python 列表推導(dǎo)和生成器表達(dá)式的使用

python 列表推導(dǎo)和生成器表達(dá)式的使用

熱門(mén)標(biāo)簽:滴滴地圖標(biāo)注公司 江門(mén)智能電話(huà)機(jī)器人 天津塘沽區(qū)地圖標(biāo)注 如何申請(qǐng)400電話(huà)代理 杭州房產(chǎn)地圖標(biāo)注 400電話(huà)在線(xiàn)如何申請(qǐng) 智能電話(huà)機(jī)器人調(diào)研 甘肅高頻外呼系統(tǒng) 地圖標(biāo)注可以遠(yuǎn)程操作嗎

序列

序列是指一組數(shù)據(jù),按存放類(lèi)型分為容器序列與扁平序列,按能否被修改分為不可變序列與可變序列。

容器序列與扁平序列

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

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

扁平序列的值是字符、字節(jié)和數(shù)值這種基礎(chǔ)類(lèi)型。

不可變序列與可變序列

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

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

下圖左邊是父類(lèi),右邊是子類(lèi),可以看出可變序列是從不可變序列繼承來(lái)的,擴(kuò)展了可變方法:

列表推導(dǎo)

Python語(yǔ)言魅力在于簡(jiǎn)潔,這能從最常見(jiàn)的創(chuàng)建列表體現(xiàn)出來(lái),比如我們想把字符串"abc"轉(zhuǎn)換成新列表["a", "b", "c"],常規(guī)寫(xiě)法:

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

用到了for循環(huán)和列表append方法。實(shí)際上可以不用append方法,直接:

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

這叫做列表推導(dǎo),是更加Pythonic的寫(xiě)法。

無(wú)論是編寫(xiě)效率還是可閱讀性,列表推導(dǎo)都更勝一籌,可以說(shuō)是構(gòu)建列表的快捷方式。但是不能濫用,通用原則是,如果列表推導(dǎo)的代碼超過(guò)了兩行,就要考慮用append了。這不是規(guī)定,完全可以憑借自我喜好來(lái)選擇。

笛卡爾積是指多個(gè)序列中元素所有組合,我們用列表推導(dǎo)來(lái)實(shí)現(xiàn)笛卡爾積:

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。

注意這行代碼有兩個(gè)for循環(huán),等價(jià)于:

for color in colors:
 for size in sizes:

運(yùn)行結(jié)果是:

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

如果換一下順序:

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

等價(jià)于:

for size in sizes:
 for color in colors:

運(yùn)行結(jié)果是不同的,觀察第2個(gè)元素:

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

生成器表達(dá)式

一般接觸到生成器時(shí),都要講yield關(guān)鍵字,看似有點(diǎn)復(fù)雜,然而卻很簡(jiǎn)單,生成器就像列表推導(dǎo)一樣,只不過(guò)是用來(lái)生成其他類(lèi)型序列的,比如元組:

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

它的語(yǔ)法非常簡(jiǎn)單,把列表推導(dǎo)的中括號(hào)[]換成小括號(hào)(),就可以了。

語(yǔ)法相似,本質(zhì)上卻有很大區(qū)別,我們?cè)囍蒙善鞅磉_(dá)式來(lái)實(shí)現(xiàn)笛卡爾積,看看會(huì)有什么變化:

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

運(yùn)行結(jié)果是:

generator object genexpr> at 0x000001FD57D2DB30>

generator object,結(jié)果是一個(gè)生成器對(duì)象。因?yàn)樯善鞅磉_(dá)式在每次迭代時(shí)才會(huì)逐個(gè)產(chǎn)出元素,所以這里的結(jié)果并不是已經(jīng)創(chuàng)建好的元組。列表推導(dǎo)才會(huì)一次性產(chǎn)生新列表所有元素。

通過(guò)迭代把生成器表達(dá)式結(jié)果輸出:

for tshirt in tshirts:
 print(tshirt)
('black', 'S')
('white', 'S')
('black', 'M')
('white', 'M')
('black', 'L')
('white', 'L')

生成器表達(dá)式可以提升程序性能,比如要計(jì)算兩個(gè)各有1000個(gè)元素的列表的笛卡爾積,生成器表達(dá)式可以幫忙省掉運(yùn)行for循環(huán)的開(kāi)銷(xiāo),即一個(gè)包含100萬(wàn)個(gè)元素的列表。

yield作用和return差不多,后面會(huì)講到。

Tips

本小節(jié)內(nèi)容是我看《流暢的Python》第一遍時(shí)記錄的知識(shí)點(diǎn):

  1. Python標(biāo)準(zhǔn)庫(kù)用C實(shí)現(xiàn)了豐富的序列類(lèi)型。
  2. 列表推導(dǎo),就是指a = [x for x in something]這種寫(xiě)法。
  3. 生成器表達(dá)式用于生成列表外的其他類(lèi)型的序列,它跟列表推導(dǎo)的區(qū)別僅僅在于方括號(hào)換成圓括號(hào),如b = tuple(x for x in something)
  4. array.array('I', x for x in something) ,array構(gòu)造方法的第一個(gè)參數(shù)指定了數(shù)組中數(shù)字的存儲(chǔ)方式。
  5. for tshirt in [c, s for c in colors for s in sizes],列表推導(dǎo)會(huì)一次性生成這個(gè)列表,存儲(chǔ)在內(nèi)存中,占用資源。for tshirt in ('%s %s' for c in colors for s in sizes),生成器表達(dá)式只在循環(huán)時(shí)逐個(gè)產(chǎn)出元素,避免額外的內(nèi)存占用,省掉了運(yùn)行for循環(huán)的開(kāi)銷(xiāo)。

小結(jié)

本文首先介紹了序列的概念,然后演示了Python常規(guī)騷操作——列表推導(dǎo),最后引出了生成器表達(dá)式這個(gè)看似復(fù)雜實(shí)則簡(jiǎn)單的語(yǔ)法。列表是可變的,它有個(gè)不可變的孿生兄弟,元組。

參考資料:

《流暢的Python》

以上就是python 列表推導(dǎo)和生成器表達(dá)式的使用的詳細(xì)內(nèi)容,更多關(guān)于python 列表推導(dǎo)和生成器表達(dá)式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python 6行代碼制作月歷生成器
  • 徹底搞懂python 迭代器和生成器
  • Python生成器傳參數(shù)及返回值原理解析
  • Python faker生成器生成虛擬數(shù)據(jù)代碼實(shí)例
  • Python3與fastdfs分布式文件系統(tǒng)如何實(shí)現(xiàn)交互
  • python django框架中使用FastDFS分布式文件系統(tǒng)的安裝方法
  • python 中文件輸入輸出及os模塊對(duì)文件系統(tǒng)的操作方法
  • 用Python編寫(xiě)一個(gè)簡(jiǎn)單的FUSE文件系統(tǒng)的教程
  • python基礎(chǔ)學(xué)習(xí)之生成器與文件系統(tǒng)知識(shí)總結(jié)

標(biāo)簽:東莞 重慶 廊坊 漢中 德宏 河池 長(zhǎng)春 臨汾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 列表推導(dǎo)和生成器表達(dá)式的使用》,本文關(guān)鍵詞  python,列表,推導(dǎo),和,生,成器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 列表推導(dǎo)和生成器表達(dá)式的使用》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python 列表推導(dǎo)和生成器表達(dá)式的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲韩国精品一区| 欧美性xxxxxxxx| 亚洲欧美色图小说| 亚洲精品在线一区二区| 99精品1区2区| jlzzjlzz欧美大全| 懂色av噜噜一区二区三区av| 亚洲成人在线观看视频| 亚洲综合免费观看高清完整版在线 | 91精品福利在线一区二区三区 | 国产盗摄女厕一区二区三区| 日韩av在线播放中文字幕| 亚洲乱码国产乱码精品精小说| 中文字幕av不卡| 中文字幕一区二区三区色视频| 国产区在线观看成人精品| 中文乱码免费一区二区| 最新久久zyz资源站| 日韩一区在线看| 香蕉久久一区二区不卡无毒影院| 日本欧美大码aⅴ在线播放| 国产资源在线一区| 欧美亚洲愉拍一区二区| 日韩女优毛片在线| 亚洲色图视频免费播放| 日韩精品成人一区二区在线| 国产综合久久久久久鬼色| 99re在线精品| 精品99999| 五月天一区二区三区| 国产成都精品91一区二区三| 91福利国产精品| 欧美激情在线观看视频免费| 粉嫩欧美一区二区三区高清影视| 成人激情综合网站| 蜜臀精品一区二区三区在线观看 | 老司机精品视频导航| 国产美女在线观看一区| 欧美一区二区视频在线观看2020| 国产欧美精品一区| 国产黑丝在线一区二区三区| 欧美一区二区久久久| 一区二区三区色| 色呦呦日韩精品| 亚洲日本一区二区三区| 99精品热视频| 亚洲天堂成人在线观看| 97久久人人超碰| 亚洲女人****多毛耸耸8| 不卡视频一二三四| 国产精品国产自产拍高清av王其| 国产成人日日夜夜| 日韩欧美一区在线观看| 国模大尺度一区二区三区| 欧美电影免费观看完整版| 蜜桃av一区二区三区电影| 欧美精品自拍偷拍| 国产麻豆91精品| 3d动漫精品啪啪1区2区免费| 午夜精品免费在线观看| 欧美大度的电影原声| 久久99精品久久久久婷婷| 欧美日韩不卡一区| 一区二区三区波多野结衣在线观看| 亚洲视频1区2区| 精品视频999| 成人高清视频在线观看| 午夜欧美大尺度福利影院在线看| 久久综合久久鬼色| 在线观看欧美精品| 国产伦精品一区二区三区免费迷| 亚洲一区av在线| 国产精品每日更新| 日韩欧美在线观看一区二区三区| 国产在线精品视频| 欧美亚男人的天堂| 成人黄色片在线观看| 美女脱光内衣内裤视频久久影院| 欧美激情在线一区二区| 日韩色视频在线观看| 在线视频国内自拍亚洲视频| 成人禁用看黄a在线| 紧缚捆绑精品一区二区| 亚洲日本青草视频在线怡红院| 欧美三级日韩在线| 91麻豆精品国产91久久久久| 欧美最猛性xxxxx直播| 精品一区二区三区影院在线午夜| 亚洲精品欧美综合四区| 国产精品萝li| 亚洲精品水蜜桃| 日韩经典一区二区| 亚洲成av人综合在线观看| 亚洲va中文字幕| 91精品国产欧美日韩| 久久亚洲影视婷婷| 久久亚洲一级片| 国产欧美日韩综合| 久久夜色精品一区| 亚洲日本护士毛茸茸| 亚洲黄色av一区| 免费看欧美女人艹b| 国产盗摄一区二区| 天天影视涩香欲综合网| 久久久久久久久久久久电影| 日韩精品一区二区三区swag| 亚洲天堂2016| 五月婷婷综合网| 国产一区二区三区综合| 色婷婷精品大视频在线蜜桃视频| 亚洲国产日韩av| 99久久伊人精品| 欧美日韩激情在线| 日韩激情在线观看| 丁香婷婷综合网| 秋霞影院一区二区| 99精品视频一区| 亚洲色图制服丝袜| 波多野结衣在线一区| 久久伊99综合婷婷久久伊| 日韩在线卡一卡二| 水野朝阳av一区二区三区| 欧美系列日韩一区| 久久美女高清视频| 日韩1区2区日韩1区2区| 亚洲国产精品高清| 高清成人在线观看| 国产精品免费视频观看| 国产成人亚洲综合a∨猫咪| 日韩欧美国产一区二区三区 | 久久av老司机精品网站导航| 91精品国产欧美一区二区成人| 亚洲福利一区二区| 91日韩一区二区三区| 国产精品久久久久三级| 国产91精品精华液一区二区三区 | 日韩精品视频网站| 在线观看亚洲精品视频| 人人精品人人爱| 国产丶欧美丶日本不卡视频| 中文字幕一区av| 91福利区一区二区三区| 日韩高清在线电影| 国产女人18毛片水真多成人如厕| 国产成人免费在线| 亚洲日本一区二区| 国产天堂亚洲国产碰碰| 99re视频这里只有精品| 日本不卡123| 亚洲一区成人在线| 国产精品高潮呻吟| 国产精品视频第一区| 欧美另类高清zo欧美| 中文字幕中文字幕一区| 欧美一区二区三级| 国产欧美精品一区二区色综合朱莉| 在线一区二区三区四区五区| 久久久影院官网| 欧美伊人精品成人久久综合97| 日韩一区欧美二区| 一区二区三区中文字幕| 国产精品家庭影院| 国产视频一区二区在线| 欧美视频在线一区二区三区| 成人激情文学综合网| 激情都市一区二区| 蜜臀av亚洲一区中文字幕| 亚洲成人免费影院| 中文字幕综合网| 中文字幕精品一区二区精品绿巨人 | 岛国一区二区在线观看| 日韩制服丝袜先锋影音| 亚洲成人免费av| 午夜日韩在线观看| 蜜臀国产一区二区三区在线播放| 亚洲免费观看视频| 成人av在线一区二区| 成人午夜精品在线| 奇米一区二区三区av| 亚洲国产精品久久久男人的天堂| 亚洲欧美另类图片小说| 中文字幕一区二区三区在线不卡| 一区二区三区中文字幕在线观看| 五月激情综合网| 精品一区二区三区欧美| 蜜桃视频在线观看一区| 免费成人av资源网| 成人黄色av网站在线| 国产另类ts人妖一区二区| 美女视频黄免费的久久| 国产在线不卡一区| 一本到三区不卡视频| 色av成人天堂桃色av| 色播五月激情综合网| 欧美丰满一区二区免费视频| 欧美精品第一页| 国产日韩av一区| 日韩精品免费专区| 蜜乳av一区二区| 色94色欧美sute亚洲13|