1. 程式人生 > >python高階特性---迭代、生成器、迭代器

python高階特性---迭代、生成器、迭代器

1.迭代

預設情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()

那麼,如何判斷一個物件是可迭代物件呢?

    方法是通過collections模組的Iterable型別判斷

    

如何判斷一個變數是不是字串?

    使用內建的isinstance函式

    

Python內建的enumerate函式可以把一個list變成索引-元素對

2.生成器

在Python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator。

建立generator:

    方法一:只要把一個列表生成式的[]改成(),用for迴圈遍歷元素

    

    方法二:如果一個函式定義中包含yield關鍵字,那麼這個函式就不再是一個普通函式,而是一個generator

3.迭代器

可以直接作用於for迴圈的物件統稱為可迭代物件:Iterable。可以使用isinstance()判斷一個物件是否是Iterable物件

可以被next()函式呼叫並不斷返回下一個值的物件稱為迭代器:Iterator。可以使用isinstance()判斷一個物件是否是Iterator物件

生成器都是Iterator物件,但list、dict、str雖然是Iterable,卻不是Iterator。把list、dict、str等Iterable變成Iterator可以使用iter()函式