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

Python生成器常見問題及解決方案

 更新時(shí)間:2020年03月21日 12:48:56   作者:luoheng  
這篇文章主要介紹了Python生成器常見問題及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在Python中,生成器和函數(shù)很像,都是在運(yùn)行的過程中才會(huì)去確定各種變量的值,所以在很多情況下,會(huì)導(dǎo)致各種各樣的問題。

def generator_test1():
  # 0...9 generator
  x = (i for i in range(10))
  # 5..9 generator
  x_filter = filter(lambda y: y >= 5, x)
  # first use the x
  L = list(x)
  print("L, x", L)
  # then use x_filter
  l = list(x_filter)
  print("l, x_filter", l)
if __name__ == "__main__":
  generator_test1()

輸出結(jié)果為:

L, x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l, x_filter []

上述代碼中,x_filter是基于生成器x構(gòu)建的生成器,但是由于x在x_filter使用之前先被用掉了,所以在使用x_filter的時(shí)候,才去獲取x的值,而此時(shí)x已經(jīng)用完了,最終導(dǎo)致x_filter轉(zhuǎn)化成的列表是空的。

def generator_test2():
  x = (i for i in range(10))
  for i in range(10):
    x = (j + i for j in x)
  L = list(x)
  print("L, x", L)
if __name__ == "__main__":
  generator_test2()

輸出結(jié)果:

L, x [90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 

上述代碼中,每次循環(huán)都基于原先的生成器構(gòu)建一個(gè)新的生成器,由于并未使用,所以生成器x中的i并沒有被賦值。在后面轉(zhuǎn)化成列表的時(shí)候才去獲取i的值,而此時(shí)由于i為9,所以所有的生成器x的i都為9,原始的x是0到9的生成器,接下來(lái)的10個(gè)生成器每個(gè)都在原始值上加9,導(dǎo)致每個(gè)值都增大了90。下面是此例的一個(gè)變體:

def generator_test3():
  x = (i for i in range(10))
  for i in range(10):
    x = (j + i for j in x)
  i = 20
  L = list(x)
  print("L, x", L)
 
if __name__ == "__main__":
  generator_test3()

輸出結(jié)果:

L, x [200, 201, 202, 203, 204, 205, 206, 207, 208, 209]

上述代碼表明,可以臨時(shí)改變i從而讓生成器發(fā)生改變。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中super()函數(shù)的理解與基本使用

    python中super()函數(shù)的理解與基本使用

    super( )函數(shù)是用來(lái)調(diào)用父類的一個(gè)方法,super( )函數(shù)還用來(lái)解決多重繼承的問題,下面這篇文章主要給大家介紹了關(guān)于python中super()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • 分析python并發(fā)網(wǎng)絡(luò)通信模型

    分析python并發(fā)網(wǎng)絡(luò)通信模型

    隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的高速發(fā)展,使用網(wǎng)絡(luò)的人數(shù)和電子設(shè)備的數(shù)量急劇增長(zhǎng),其也對(duì)互聯(lián)網(wǎng)后臺(tái)服務(wù)程序提出了更高的性能和并發(fā)要求。本文主要分析比較了一些模型的優(yōu)缺點(diǎn),并且用python來(lái)實(shí)現(xiàn)
    2021-06-06
  • 使用Python合成圖片的實(shí)現(xiàn)代碼(圖片添加個(gè)性化文本,圖片上疊加其他圖片)

    使用Python合成圖片的實(shí)現(xiàn)代碼(圖片添加個(gè)性化文本,圖片上疊加其他圖片)

    這篇文章主要介紹了使用Python合成圖片的實(shí)現(xiàn)代碼(圖片添加個(gè)性化文本,圖片上疊加其他圖片),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 詳解【python】str與json類型轉(zhuǎn)換

    詳解【python】str與json類型轉(zhuǎn)換

    這篇文章主要介紹了【python】str與json類型轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Pandas merge合并兩個(gè)DataFram的實(shí)現(xiàn)

    Pandas merge合并兩個(gè)DataFram的實(shí)現(xiàn)

    本文主要介紹了Pandas merge合并兩個(gè)DataFram的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解Python中第三方庫(kù)Faker

    詳解Python中第三方庫(kù)Faker

    這篇文章主要介紹了Python中第三方庫(kù)-Faker的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測(cè)試集的方法

    python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測(cè)試集的方法

    今天小編就為大家分享一篇python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測(cè)試集的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-12-12
  • Python輸入二維數(shù)組方法

    Python輸入二維數(shù)組方法

    下面小編就為大家分享一篇Python輸入二維數(shù)組方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • Python2寫csv文件中文亂碼問題及解決方法

    Python2寫csv文件中文亂碼問題及解決方法

    python2最大的坑在于中文編碼問題,遇到中文報(bào)錯(cuò)首先加u,再各種encode、decode,這篇文章給大家介紹Python2寫csv文件中文亂碼問題及解決方法,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 自己編程中遇到的Python錯(cuò)誤和解決方法匯總整理

    自己編程中遇到的Python錯(cuò)誤和解決方法匯總整理

    這篇文章主要介紹了自己編程中遇到的Python錯(cuò)誤和解決方法匯總整理,本文收集整理了較多的案例,需要的朋友可以參考下
    2015-06-06

最新評(píng)論