迭代器即迭代的工具,那什麼是迭代呢?
迭代是一個重複的過程,每次重複即一次迭代,而且每次迭代的結果都是下一次迭代的初始值python
while True: #只是單純地重複,於是不是迭代 print('===>') l=[1,2,3] count=0 while count < len(l): #迭代 print(l[count]) count+=1
python中一切皆對象,對於這一切的對象中,但凡是有__iter__
方法的對象,都是可迭代對象。函數
基於上一次的結果推出下一次結果工具
# # 可迭代(具備__iter__方法)對象 x = 2 # 不可迭代 # x.__iter__ # SyntaxError: invalid syntax s = 'randysun' s.__iter__() # str 爲可迭代對象 lt = [1, 2, 3] lt.__iter__() # list 爲可迭代對象 dic = {'a': 1, "b": 2} dic.__iter__() # dict 爲可迭代對象 tup = (1,) tup.__iter__() # tuple 爲可迭代對象 se = {1, 2, 3} se.__iter__() # 可迭代對象 f = open('test.py') f.__iter__() # 可迭代對象 def func(): pass # 不可迭代對象 # 有__iter__()方法的對象都是可迭代對象,而後除了數字類型和函數以外都是可迭代對象
可迭代的對象:Python內置str、list、tuple、dict、set、file都是可迭代對象。code
s = 'randysun' s_iter = s.__iter__() print(s_iter.__next__()) print(s_iter.__next__()) print(s_iter.__next__())
特色:對象
__iter__
方法的都叫可迭代的對象。迭代器對象: 具備__iter__以及__next__方法的叫作迭代器對象blog
s = 'nick' # 可迭代對象,不屬於迭代器對象 s.__iter__() lt = [1, 2, 3] # 可迭代對象,不屬於迭代器對象 dic = {'a': 1, 'b': 2} # 可迭代對象,不屬於迭代器對象 tup = (1,) # 元組只有一個元素必須得加逗號# 可迭代對象,不屬於迭代器對象 se = {1, 2, 3} # 可迭代對象,不屬於迭代器對象 f = open('time.py') # 可迭代對象,迭代器對象 # 只有文件是迭代器對象
lt = [1, 2, 3] lt_iter = lt.__iter__() while True: try: print(lt_iter.__next__()) except StopIteration: break
1
2
3索引
for i in lt: # 可迭代對象;迭代器對象 不依賴索引取值,而是迭代取值 print(i) # 1. 首先使用iter把it變成迭代器對象,對文文件也要使用iter方法把文件再一次iter # 2. 而後使用next方法進行迭代取值 # 3. 判斷StopIteration異常,遇到異常終止
優勢:內存