迭代器
迭代器是訪問集合元素的一種方式,可以記住遍歷的位置的對象
迭代器有兩個基本的方法:iter()?和?next()
字符串,列表或元組對象都可用于創建迭代器
字符串迭代
str1 = 'Python'
str_iter = iter(str1)
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))#輸出
P
y
t
h
o
n
列表迭代
list = [2,4,6,8,10]
list_iter = iter(list)
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))#輸出
2
4
6
8
10
元組迭代
tup1 = ('java','python','php')
tup_iter = iter(tup1)
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))#輸出
java
python
php
Traceback (most recent call last):print(next(tup_iter))
StopIteration
StopIteration
從上面元組的迭代結果中,我們發現了第四次迭代報錯:StopIteration
作用:防止出現無限循環迭代
list = [1,2,3,4,5,6,7,8,9]
for i in list:if i > 3:raise StopIterationelse:print(i)#輸出
1
2
3
Traceback (most recent call last):raise StopIteration
StopIteration
判斷對象是否可迭代
from collections.abc import Iterableprint(isinstance([1,2,3,4],Iterable))
print(isinstance(1234,Iterable))
print(isinstance('123',Iterable))#輸出
True
False
True
生成器
生成器是一個用于創建迭代器的簡單而強大的工具
使用 yield 語句,每次在生成器上調用next()時,它會從上次離開的位置恢復執行(它會記住上次執行語句時的所有數據值)
def reverse(data):for index in range(len(data)-1, -1, -1):yield data[index]for i in reverse('Python'):print(i) #輸出
n
o
h
t
y
P
系列文章索引
Python(一)關鍵字、內置函數
Python(二)基本數據類型
Python(三)數據類型轉換
Python(四)字符串
Python(五)數字
Python(六) 列表
Python(七) 條件控制、循環語句
Python(八) 字典
Python(九) 集合