欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python列表推導(dǎo)式與生成器用法分析

 更新時(shí)間:2018年08月02日 09:32:08   作者:bitcarmanlee  
這篇文章主要介紹了Python列表推導(dǎo)式與生成器用法,結(jié)合實(shí)例形式分析了列表推導(dǎo)式、生成器的原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python列表推導(dǎo)式與生成器用法。分享給大家供大家參考,具體如下:

1. 先看兩個(gè)列表推導(dǎo)式

def t1():
  func1 = [lambda x: x*i for i in range(10)]
  result1 = [f1(2) for f1 in func1]
  print result1
def t2():
  func2 = [lambda x, i=i: x*i for i in range(10)]
  result2 = [f2(2) for f2 in func2]
  print result2

上面是兩個(gè)列表推導(dǎo)式,里面包含有lambda表達(dá)式。輸出結(jié)果分別為:

[18, 18, 18, 18, 18, 18, 18, 18, 18, 18]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

2. 為什么結(jié)果會(huì)不同

在上面的例子中,列表解析會(huì)生成一系列的函數(shù)對(duì)象。例如

def func():
  pass

會(huì)產(chǎn)生一個(gè)名為func的函數(shù)對(duì)象。注意不同于func(),加上小括號(hào)以后,此時(shí)變?yōu)榱苏{(diào)用函數(shù)對(duì)象。

函數(shù)對(duì)象只有在調(diào)用的時(shí)候才開(kāi)始對(duì)內(nèi)部的變量進(jìn)行引用。在t1()方法中,對(duì)i來(lái)說(shuō), 當(dāng)函數(shù)對(duì)它引用的時(shí)候, 它已經(jīng)變?yōu)?, 所以10個(gè)函數(shù)都引用了i=9

而對(duì)于t2()方法來(lái)說(shuō),lambda函數(shù)相當(dāng)于變成接受兩個(gè)參數(shù)了,所以返回了不一樣的結(jié)果。

3. 另外的方式

def t3():
  func3 = (lambda x: x*i for i in range(10))
  result3 = [f3(2) for f3 in func3]
  print result3

上面的代碼,輸出的結(jié)果為:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

此時(shí),相當(dāng)于把列表推導(dǎo)式變成了生成器,結(jié)果又不一樣了!

對(duì)于生成器, 只有你需要的時(shí)候它才會(huì)求值, 這也是和列表解析式的區(qū)別, 列表解析式只要你運(yùn)行, 馬上就把i變?yōu)榱?, 可是生成器不會(huì), 當(dāng)你調(diào)用第一個(gè)函數(shù)的時(shí)候, 他把相應(yīng)的i求出來(lái), 然后停止, 等你下一次調(diào)用, 這個(gè)就完美符合我們的預(yù)期了.

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python列表(list)操作技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 對(duì)numpy中的where方法嵌套使用詳解

    對(duì)numpy中的where方法嵌套使用詳解

    今天小編就為大家分享一篇對(duì)numpy中的where方法嵌套使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法

    Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法

    本文匯總整理了Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法,并提供簡(jiǎn)單應(yīng)用示例;如果還不能滿足你的要求,歡迎加入補(bǔ)充
    2020-01-01
  • pandas實(shí)現(xiàn)datetime64與unix時(shí)間戳互轉(zhuǎn)

    pandas實(shí)現(xiàn)datetime64與unix時(shí)間戳互轉(zhuǎn)

    這篇文章主要介紹了pandas實(shí)現(xiàn)datetime64與unix時(shí)間戳互轉(zhuǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • django表單實(shí)現(xiàn)下拉框的示例講解

    django表單實(shí)現(xiàn)下拉框的示例講解

    今天小編就為大家分享一篇django表單實(shí)現(xiàn)下拉框的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python中pandas輸出完整、對(duì)齊的表格的方法

    python中pandas輸出完整、對(duì)齊的表格的方法

    今天使用python計(jì)算數(shù)據(jù)相關(guān)性,但是發(fā)現(xiàn)計(jì)算出的表格中間好多省略號(hào),而且也不對(duì)齊。怎么解決這個(gè)問(wèn)題,下面小編給大家?guī)?lái)了python中pandas如何輸出完整、對(duì)齊的表格,感興趣的朋友一起看看吧
    2021-10-10
  • Pytorch mask_select 函數(shù)的用法詳解

    Pytorch mask_select 函數(shù)的用法詳解

    今天小編就為大家分享一篇Pytorch mask_select 函數(shù)的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 利用Python改正excel表格數(shù)據(jù)

    利用Python改正excel表格數(shù)據(jù)

    這篇文章主要介紹了利用Python改正excel表格數(shù)據(jù),運(yùn)用面向過(guò)程寫的,將每一步都放在了不同的函數(shù)中,下文詳細(xì)過(guò)程介紹需要的小伙伴可以參考一下
    2022-06-06
  • pytorch如何自定義數(shù)據(jù)集

    pytorch如何自定義數(shù)據(jù)集

    這篇文章主要介紹了pytorch自定義數(shù)據(jù)集,在識(shí)別手寫數(shù)字的例子中,數(shù)據(jù)集是直接下載的,但如果我們自己收集了一些數(shù)據(jù),存在電腦文件夾里,我們?cè)撊绾伟堰@些數(shù)據(jù)變?yōu)榭梢栽赑yTorch框架下進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)集呢,即如何自定義數(shù)據(jù)集呢,需要的朋友可以參考下
    2024-01-01
  • Python單元測(cè)試模塊doctest的具體使用

    Python單元測(cè)試模塊doctest的具體使用

    這篇文章主要介紹了Python單元測(cè)試模塊doctest的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python提效小工具之統(tǒng)計(jì)xmind用例數(shù)量(源碼)

    python提效小工具之統(tǒng)計(jì)xmind用例數(shù)量(源碼)

    這篇文章主要介紹了python提效小工具之統(tǒng)計(jì)xmind用例數(shù)量,利用python開(kāi)發(fā)小工具,實(shí)現(xiàn)同一份xmind文件中一個(gè)或多個(gè)sheet頁(yè)的用例數(shù)量統(tǒng)計(jì)功能,需要的朋友可以參考下
    2022-10-10

最新評(píng)論