Python生成器以及應用實例解析
本文研究的主要是Python生成器及其應用,具體如下。
一、定義
可以理解為一種數(shù)據(jù)類型,這種數(shù)據(jù)類型自動實現(xiàn)了迭代器協(xié)議(其他的數(shù)據(jù)類型需要調用自己內置的__iter__方法),所以生成器就是可迭代對象
二、生成器的兩種形式(Python有兩種不同的方式提供生成器)
1.生成器函數(shù):常規(guī)函數(shù)定義,但是,使用yield語句而不是return語句返回結果。yield語句一次返回一個結果,在每個結果中間,掛起函數(shù)的狀態(tài),以便下次重它離開的地方繼續(xù)執(zhí)行
yield的功能:
- 把函數(shù)的結果做生迭代器(以一種優(yōu)雅的方式封裝好__iter__,__next__)
- 函數(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.生成器表達式:類似于列表推導,但是,生成器返回按需產生結果的一個對象,而不是一次構建一個結果列表
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生成器以及應用實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
python Pandas高級功能之數(shù)據(jù)透視表和字符串操作
Pandas是Python中用于數(shù)據(jù)處理和分析的強大庫,這篇文章將深入探討Pandas庫的高級功能:數(shù)據(jù)透視表和字符串操作,需要的朋友可以參考下2023-07-07
python批量實現(xiàn)Word文件轉換為PDF文件
這篇文章主要為大家詳細介紹了python批量實現(xiàn)Word文件轉換為PDF文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
django通過ajax發(fā)起請求返回JSON格式數(shù)據(jù)的方法
這篇文章主要介紹了django通過ajax發(fā)起請求返回JSON格式數(shù)據(jù)的方法,較為詳細的分析了django處理ajax請求的技巧,需要的朋友可以參考下2015-06-06
解決win10 vscode 無法激活python 虛擬環(huán)境的問題
這篇文章主要介紹了win10 vscode 無法激活python 虛擬環(huán)境的解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10
Python基于二分查找實現(xiàn)求整數(shù)平方根的方法
這篇文章主要介紹了Python基于二分查找實現(xiàn)求整數(shù)平方根的方法,涉及Python的二分查找算法與數(shù)學運算相關技巧,需要的朋友可以參考下2016-05-05

