Python函數(shù)的迭代器與生成器的示例代碼
函數(shù)的迭代器
函數(shù)的強大功能叫做迭代器,Python里面最具威力的功能之一。迭代器我們聽起來會感覺非常陌生,在list、tuple都有用到它,我們是使用for和in取列表中的每一個元素,對每個元素依次處理,這種方法就叫做迭代,實現(xiàn)這種方法的函數(shù)叫做迭代器。迭代器中有兩個基本的函數(shù),這個函數(shù)叫做方法,這個是面向?qū)ο缶幊谭Q呼的一個方法,這兩個方法叫做iter()和next()。
1.什么是迭代?迭代是一個重復(fù)的過程,并且每次重復(fù)都是基于上一次的結(jié)果而來
2.要想了解迭代器到底是什么?必須先了解一個概念,即什么是可迭代的對象? 可迭代的對象:在python中,但凡內(nèi)置有'‘iter''方法的對象,都是可迭代的對象
3.迭代器:迭代取值工具,可迭代的對象執(zhí)行iter方法得到的返回值就是迭代器對象
舉例演示-迭代器定義一個列表,處理成處理器
list1=[1,2,3,4] it=iter(list1)#賦值變量 print(next(it)) print(next(it)) print(next(it)) print(next(it))

舉例演示-輸出異常
list1=[1,2,3,4] it=iter(list1)#賦值變量 print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it))#except,超出列表范圍會報錯誤信息StopIteration

總結(jié)
每調(diào)用一次next()會輸出iter()里面的下一個元素
一直到輸出完成
超出長度就會出現(xiàn)異常
函數(shù)的生成器
我們感受到迭代器的功能的強大,如何自己制作一個迭代器呢?
舉例演示-簡單迭代器range()函數(shù)
for i in range(10,20,2):#第一個參數(shù)是開始參數(shù);第二個參數(shù)是結(jié)束參數(shù);第三個參數(shù)是步長 print(i)
如果步長為小數(shù)0.5是否可以,則會返回類型錯誤的信息
Range()函數(shù)必須是整數(shù)哦

舉例演示-如何優(yōu)化上述問題,支持小數(shù)
引用yield,帶yield的函數(shù)就叫做生成器
def frange(start,stop,step): x=start#定義一個變量 while x<stop: yield x #沒有yield,while會把所有的值一次性進行返回;yield運行到這個位置,會暫停記錄當(dāng)前的位置,當(dāng)你再次去調(diào)用一個next的時候,會根據(jù)當(dāng)前的位置返回一個值給你 x+=step for i in frange(10,20,0.5): print(i)

到此這篇關(guān)于Python函數(shù)的迭代器與生成器的文章就介紹到這了,更多相關(guān)Python函數(shù)的迭代器與生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU
這篇文章主要介紹了tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
python入門之基礎(chǔ)語法學(xué)習(xí)筆記
學(xué)習(xí)python過程中需要了解的一些基礎(chǔ)語法特整理一下方便更開始接觸python的朋友2020-02-02
python批量從es取數(shù)據(jù)的方法(文檔數(shù)超過10000)
今天小編就為大家分享一篇python批量從es取數(shù)據(jù)的方法(文檔數(shù)超過10000),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python IDE環(huán)境之 新版Pycharm安裝詳細(xì)教程
這篇文章主要介紹了Python IDE環(huán)境之 新版Pycharm安裝教程,本文教程給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03

