標籤:[] 迭代 迭代器 dict 本質 pytho except odi ict
直接用作於for迴圈的資料類型有以下幾種:
1、集合類的資料類型:list tuple dict set str等
2、產生器generator,包括產生器和帶有yiled 的generator function
上面這些可以直接用於for迴圈的對象統稱為可迭代的對象Iterable。
1 #coding=utf-82 3 from collections import Iterable4 5 print(isinstance({}, Iterable)) #True6 print(isinstance([], Iterable)) #True7 print(isinstance(‘iterable‘, Iterable)) #True8 print(isinstance((), Iterable)) #True9 print(isinstance(100, Iterable)) #False
迭代器:可以被next()調用不斷返回下一個值的對象稱之為迭代器(Iterator)
1 from collections import Iterator2 3 print(isinstance({}, Iterator)) #False4 print(isinstance([], Iterator)) #False5 print(isinstance(‘iterable‘, Iterator)) #False6 print(isinstance((), Iterator)) #False7 print(isinstance((x for x in range(5)), Iterator)) #True8 9 #上述可知,列表、字典、字串、元祖等都不屬於迭代器(Iterator)
可迭代對象能否變成迭代器呢?通多內建方法iter()可以實現
1 from collections import Iterator2 3 print(isinstance(iter({}), Iterator)) #True4 print(isinstance(iter([]), Iterator)) #True5 print(isinstance(iter(‘iterable‘), Iterator)) #True6 print(isinstance(iter(()), Iterator)) #True7 print(isinstance((x for x in range(5)), Iterator)) #True
小結:
1 #Python的For迴圈本質就是不斷通過調用next函數實現的例如下面兩段代碼 2 3 #代碼一 4 5 for x in range(10): 6 print(x) 7 8 #代碼二 9 it = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])10 while True:11 try:12 x = next(it)13 print(x)14 except StopIteration:15 break16 #代碼一與代碼二等價
Python之路----------迭代器