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

用生成器來(lái)改寫(xiě)直接返回列表的函數(shù)方法

 更新時(shí)間:2017年05月25日 09:04:14   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇用生成器來(lái)改寫(xiě)直接返回列表的函數(shù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

本文是一篇關(guān)于《Effective Python》書(shū)中一節(jié)的學(xué)習(xí)筆記,記錄了示例代碼和思路。

如果函數(shù)要產(chǎn)生一系列結(jié)果,那么最簡(jiǎn)單的做法就是把這些結(jié)果都放在一個(gè)列表里返回。

比如我們要查出字符串中每個(gè)詞的首字母在整串字符串中的位置:

def index_word(text):
  result=[]
  if text:
    result.append(0)
  for index,letter in enumerate(text):
    if letter == ' ':
      result.append(index+1)
  return result

該函數(shù)的使用:

  

這個(gè)函數(shù)思路很明了,但存在的問(wèn)題在于代碼擁擠、冗余。返回前要把所有結(jié)果都放在列表里,如果輸入量巨大,則程序可能會(huì)耗盡內(nèi)存發(fā)生崩潰。

這個(gè)函數(shù)改用生成器(generator)來(lái)寫(xiě)會(huì)更好??梢詫?duì)應(yīng)任意長(zhǎng)度的數(shù)據(jù),不會(huì)影響到執(zhí)行時(shí)所耗內(nèi)存。

生成器是使用yield表達(dá)式的函數(shù)。調(diào)用生成器函數(shù)時(shí),它并不會(huì)真的運(yùn)行,而是會(huì)返回迭代器。每次在這個(gè)迭代器上面調(diào)用內(nèi)置的next函數(shù)時(shí),迭代器會(huì)把生成器推進(jìn)到下一個(gè)yield表達(dá)式那里。生成器傳給yield的每一個(gè)值,都會(huì)由迭代器返回給調(diào)用者。

def index_word_iter(text):
  if text:
    yield 0
  for index,letter in enumerate(text):
    if letter == ' ':
      yield index+1

需要注意的是:函數(shù)返回的迭代器,只能產(chǎn)生一輪結(jié)果,如果繼續(xù)迭代第二輪,是不會(huì)再有結(jié)果的。

以上這篇用生成器來(lái)改寫(xiě)直接返回列表的函數(shù)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決Django migrate No changes detected 不能創(chuàng)建表的問(wèn)題

    解決Django migrate No changes detected 不能創(chuàng)建表的問(wèn)題

    今天小編就為大家分享一篇解決Django migrate No changes detected 不能創(chuàng)建表的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)

    Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)

    很多時(shí)候我們處理的Excel表格并不是我們想要的樣子,需要將表格的形式進(jìn)行相應(yīng)轉(zhuǎn)換后進(jìn)行數(shù)據(jù)分析操作,下面這篇文章主要給大家介紹了關(guān)于Python中xlsx文件轉(zhuǎn)置操作(行轉(zhuǎn)列和列轉(zhuǎn)行)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • pip install urllib2不能安裝的解決方法

    pip install urllib2不能安裝的解決方法

    今天小編就為大家分享一篇pip install urllib2不能安裝的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 用python畫(huà)一只帥氣的皮卡丘

    用python畫(huà)一只帥氣的皮卡丘

    大家好,本篇文章主要講的是用python畫(huà)一只帥氣的皮卡丘,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python學(xué)習(xí)之str重要函數(shù)

    Python學(xué)習(xí)之str重要函數(shù)

    這篇文章主要介紹了Python str重要函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Python利用柯里化實(shí)現(xiàn)提高代碼質(zhì)量

    Python利用柯里化實(shí)現(xiàn)提高代碼質(zhì)量

    柯里化(Currying)是函數(shù)式編程中的一個(gè)重要概念,它可以將一個(gè)多參數(shù)函數(shù)轉(zhuǎn)化為一系列單參數(shù)函數(shù)的組合,本文將詳細(xì)解釋什么是柯里化,如何在Python中實(shí)現(xiàn)柯里化,感興趣的可以了解下
    2024-01-01
  • Python 中urls.py:URL dispatcher(路由配置文件)詳解

    Python 中urls.py:URL dispatcher(路由配置文件)詳解

    這篇文章主要介紹了Python 中urls.py:URL dispatcher(路由配置文件)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • PyTorch-Forecasting一個(gè)新的時(shí)間序列預(yù)測(cè)庫(kù)使用詳解

    PyTorch-Forecasting一個(gè)新的時(shí)間序列預(yù)測(cè)庫(kù)使用詳解

    這篇文章主要為大家介紹了PyTorch-Forecasting一個(gè)新的時(shí)間序列預(yù)測(cè)庫(kù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Java中關(guān)于泛型接口的使用說(shuō)明

    Java中關(guān)于泛型接口的使用說(shuō)明

    這篇文章主要介紹了Java中關(guān)于泛型接口的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 從請(qǐng)求到響應(yīng)過(guò)程中django都做了哪些處理

    從請(qǐng)求到響應(yīng)過(guò)程中django都做了哪些處理

    這篇文章主要給大家介紹了關(guān)于從請(qǐng)求到響應(yīng)過(guò)程中django都做了哪些處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08

最新評(píng)論