亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python生成器以及應用實例解析

發布時間:2020-10-04 17:17:13 來源:腳本之家 閱讀:111 作者:返回主頁 劉小偉 欄目:開發技術

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

一、定義

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

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

1.生成器函數:常規函數定義,但是,使用yield語句而不是return語句返回結果。yield語句一次返回一個結果,在每個結果中間,掛起函數的狀態,以便下次重它離開的地方繼續執行

yield的功能:

  1. 把函數的結果做生迭代器(以一種優雅的方式封裝好__iter__,__next__)
  2. 函數暫停與再繼續運行的狀態是由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.生成器表達式:類似于列表推導,但是,生成器返回按需產生結果的一個對象,而不是一次構建一個結果列表

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))

三、應用

# [{'name': 'apple', 'price': 333, 'count': 3}, ]文件內容
#通過生成器表達器完成對文件的讀完跟操作
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)

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高碑店市| 天等县| 雷山县| 屯留县| 松阳县| 吉安市| 封丘县| 青浦区| 女性| 英德市| 德惠市| 平顺县| 南丹县| 辽阳市| 金秀| 田东县| 承德县| 屯昌县| 无锡市| 临澧县| 麻栗坡县| 北宁市| 准格尔旗| 上栗县| 临泉县| 夏津县| 武城县| 凤冈县| 邻水| 昆明市| 平果县| 师宗县| 安顺市| 房山区| 南郑县| 楚雄市| 旬邑县| 仙桃市| 额尔古纳市| 庄河市| 郧西县|