@r星校長
第4
關:迭代器
迭代器用來迴圈訪問一系列元素,它不僅可以迭代序列,也可以迭代不是序列但是表現出序列行為的物件。本關的任務是讓學習者理解與學會使用迭代器。
迭代器的優點
迭代器訪問與for
迴圈訪問非常相似,但是也有不同之處。對於支援隨機訪問的資料結構如元組和列表,迭代器並無優勢。因為迭代器在訪問的時候會丟失資料索引值,但是如果遇到無法隨機訪問的資料結構如集合時,迭代器是唯一訪問元素的方式;
迭代器僅僅在訪問到某個元素時才使用該元素。在這之前,元素可以不存在,所以迭代器很適用於迭代一些無法預先知道元素總數的巨大的集合;
迭代器提供了乙個統一的訪問集合的介面,定義iter()
方法物件,就可以使用迭代器訪問。
理解迭代器
可直接作用於for
迴圈的資料型別如list
、tuple
、dict
等統稱為可迭代物件:iterable
。使用isinstance()
可以判斷乙個物件是否是可迭代物件。例如:
from collections import iterable
result =
isinstance([
],iterable)
print
(result)
result =
isinstance((
),iterable)
print
(result)
result =
isinstance
('python'
,iterable)
print
(result)
result =
isinstance
(213
,iterable)
print
(result)
結果為:
true
true
true
false
可以被next()
函式呼叫並不斷返回下乙個值的物件稱為迭代器:iterator
。next()
函式訪問每乙個物件,直到物件訪問完畢,返回乙個stopiteration
異常。使用isinstance()
可以判斷乙個物件是否是iterator
物件。例如:
from collections import iterator
result =
isinstance([
],iterator)
print
(result)
result =
isinstance((
),iterator)
print
(result)
result =
isinstance
((x for x in
range(10
)),iterator)
print
(result)
結果為:
false
false
true
所有的iterable
都可以通過iter()
函式轉化為iterator
。
定義迭代器
當自己定義迭代器時,需要定義乙個類。類裡面包含乙個iter()
函式,這個函式能夠返回乙個帶next()
方法的物件。例如:
class
myiterable
:def
__iter__
(self)
:return myiterator(
)class
myiterator
:def
__init__
(self)
: self.num =
0def
__next__
(self)
: self.num +=
1if self.num >=10:
raise stopiteration
return self.num
複製迭代器迭代器當一次迭代完畢後就結束了,在此呼叫便會引發stopiteration
異常。如果想要將迭代器儲存起來,可以使用複製的方法:copy.deepcopy():x = copy.deepcopy(y)
,不可使用賦值的方法,這樣是不起作用的。
list =
member =
input()
for i in member.split(
',')
: result = i
#請在此新增**,將list轉換為迭代器的**
#********** begin *********#
iterlist =
iter
(list)
#********** end **********#
while
true
:try
:#請在此新增**,用next()函式遍歷iterlist的**
#********** begin *********#
num =
next
(iterlist)
#********** end **********#
result =
int(num)*2
print
(result)
except stopiteration:
break
預期輸入:5,
只要認為是對的就去做,堅持去做。不要在乎別人的看法,哪怕是錯,至少你有去做過證明曾經你努力過。
Python入門之(3 3)迴圈結構
目錄 迴圈結構 1.1while迴圈 1.2for迴圈 1.3break和continue語句 1.4迴圈中的else語句 1.5巢狀迴圈 1.6字串的遍歷迴圈 1.7pass語句 迴圈結構是結構化程式設計中常用的結構,可以簡化程式,或解決順序結構和選擇結構無法解決的問題。迴圈是指在滿足一定條件的情...
Python控制語句 迴圈結構
二.迴圈結構 1.while語句 while 判斷條件 執行語句 2.for語句 for 迴圈索引值 in 序列 迴圈體注 對於列表可通過索引 列表下標 遍歷 for i in range len fruits print 當前水果 fruits i 3.continue與break語句 4.迴圈巢...
python 迴圈結構控制語句。
迴圈的意思就是讓程式重複地執行某些語句。在實際應用中,當碰到需要多次重複地執行乙個或多個任務時,可考慮使用迴圈語句來解決。迴圈語句的特點是在給定條件成立時,重複執行某個程式段。通常稱給定條件為迴圈條件,稱反覆執行的程式段為迴圈體。在while語句中,當條件表示式為true時,就重複執行語句塊 當條件...