亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python生成器以及應(yīng)用實例解析

 更新時間:2018年02月08日 10:38:29   作者:返回主頁 劉小偉  
這篇文章主要介紹了Python生成器以及應(yīng)用實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Python生成器及其應(yīng)用,具體如下。

一、定義

可以理解為一種數(shù)據(jù)類型,這種數(shù)據(jù)類型自動實現(xiàn)了迭代器協(xié)議(其他的數(shù)據(jù)類型需要調(diào)用自己內(nèi)置的__iter__方法),所以生成器就是可迭代對象

二、生成器的兩種形式(Python有兩種不同的方式提供生成器)

1.生成器函數(shù):常規(guī)函數(shù)定義,但是,使用yield語句而不是return語句返回結(jié)果。yield語句一次返回一個結(jié)果,在每個結(jié)果中間,掛起函數(shù)的狀態(tài),以便下次重它離開的地方繼續(xù)執(zhí)行

yield的功能:

  1. 把函數(shù)的結(jié)果做生迭代器(以一種優(yōu)雅的方式封裝好__iter__,__next__)
  2. 函數(shù)暫停與再繼續(xù)運行的狀態(tài)是由yield
def func():
  print('first')
  yield 11111111
  print('second')
  yield 2222222
  print('third')
  yield 33333333
  print('fourth')


g=func()
print(g)
from collections import Iterator
print(isinstance(g,Iterator)) #判斷是否為迭代器對象

print(next(g))
print('======>')
print(next(g))
print('======>')
print(next(g))
print('======>')
print(next(g))

for i in g: #i=iter(g)
  print(i)

注:yield與return的比較?

  • 相同:都有返回值的功能
  • 不同:return只能返回一次值,而yield可以返回多次值

2.生成器表達(dá)式:類似于列表推導(dǎo),但是,生成器返回按需產(chǎn)生結(jié)果的一個對象,而不是一次構(gòu)建一個結(jié)果列表

g=('egg%s' %i for i in range(1000))
print(g)
print(next(g))
print(next(g))
print(next(g))

with open('a.txt',encoding='utf-8') as f:
  # res=max((len(line) for line in f))
  res=max(len(line) for line in f)
  print(res)

print(max([1,2,3,4,5,6]))

with open('a.txt',encoding='utf-8') as f:
  g=(len(line) for line in f)
  print(max(g))
  print(max(g))
  print(max(g))

三、應(yīng)用

# [{'name': 'apple', 'price': 333, 'count': 3}, ]文件內(nèi)容
#通過生成器表達(dá)器完成對文件的讀完跟操作
with open('db.txt',encoding='utf-8') as f:
  info=[{'name':line.split()[0],
   'price':float(line.split()[1]),
   'count':int(line.split()[2])} for line in f if float(line.split()[1]) >= 30000]
  print(info)

總結(jié)

以上就是本文關(guān)于Python生成器以及應(yīng)用實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python的math模塊中的常用數(shù)學(xué)函數(shù)整理

    Python的math模塊中的常用數(shù)學(xué)函數(shù)整理

    這篇文章主要介紹了Python的math模塊中的常用數(shù)學(xué)函數(shù)整理,同時對運算符的運算優(yōu)先級作了一個羅列,需要的朋友可以參考下
    2016-02-02
  • Python實現(xiàn)yaml與json文件批量互轉(zhuǎn)

    Python實現(xiàn)yaml與json文件批量互轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實現(xiàn)yaml與json文件的批量互轉(zhuǎn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手嘗試一下
    2022-07-07
  • Python中MySQL數(shù)據(jù)遷移到MongoDB腳本的方法

    Python中MySQL數(shù)據(jù)遷移到MongoDB腳本的方法

    MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。本文給大家介紹Python中MySQL數(shù)據(jù)遷移到MongoDB腳本的方法,需要的朋友參考下
    2016-04-04
  • Pandas?DataFrame列快速轉(zhuǎn)換為列表(3秒學(xué)會!)

    Pandas?DataFrame列快速轉(zhuǎn)換為列表(3秒學(xué)會!)

    這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame列如何快速轉(zhuǎn)換為列表的相關(guān)資料,在Python的pandas庫中可以使用DataFrame的tolist()方法將DataFrame轉(zhuǎn)化為列表,需要的朋友可以參考下
    2023-10-10
  • Python基于OpenCV實現(xiàn)視頻的人臉檢測

    Python基于OpenCV實現(xiàn)視頻的人臉檢測

    這篇文章主要為大家詳細(xì)介紹了Python基于OpenCV實現(xiàn)視頻的人臉檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python學(xué)習(xí)小技巧總結(jié)

    Python學(xué)習(xí)小技巧總結(jié)

    本篇文章給大家總結(jié)了關(guān)于python相關(guān)知識點學(xué)習(xí)的技巧以及難點,有興趣的朋友可以參考學(xué)習(xí)下。
    2018-06-06
  • python遠(yuǎn)程連接服務(wù)器MySQL數(shù)據(jù)庫

    python遠(yuǎn)程連接服務(wù)器MySQL數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了python遠(yuǎn)程連接服務(wù)器MySQL數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python處理xml文件的方法小結(jié)

    python處理xml文件的方法小結(jié)

    這篇文章主要介紹了python處理xml文件的方法,結(jié)合實例形式總結(jié)分析了Python常見的xml文件處理技巧與相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05
  • python paramiko連接ssh實現(xiàn)命令

    python paramiko連接ssh實現(xiàn)命令

    這篇文章主要為大家介紹了python paramiko連接ssh實現(xiàn)的命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python計算列表內(nèi)各元素的個數(shù)實例

    python計算列表內(nèi)各元素的個數(shù)實例

    今天小編就為大家分享一篇python計算列表內(nèi)各元素的個數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論