迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
以直接作用於 for 迴圈的資料型別有以下幾種:
一類是集合資料型別,如 list 、 tuple 、 dict 、 set 、 str 等;
一類是 generator ,包括生成器和帶 yield 的generator function。
這些可以直接作用於 for 迴圈的物件統稱為可迭代物件: iterable 。
可以使用 isinstance() 判斷乙個物件是否是 iterable 物件:
in [50]: from collections import iterable
in [51]: isinstance(, iterable)
out[51]: true
in [52]: isinstance({}, iterable)
out[52]: true
in [53]: isinstance('abc', iterable)
out[53]: true
in [54]: isinstance((x for x in range(10)), iterable)
out[54]: true
in [55]: isinstance(100, iterable)
out[55]: false
而生成器不但可以作用於 for 迴圈,還可以被 next() 函式不斷呼叫並返回下乙個值,直到最後丟擲 stopiteration 錯誤表示無法繼續返回下乙個值了。
可以使用 isinstance() 判斷乙個物件是否是 iterator 物件:
in [56]: from collections import iterator
in [57]: isinstance((x for x in range(10)), iterator)
out[57]: true
in [58]: isinstance(, iterator)
out[58]: false
in [59]: isinstance({}, iterator)
out[59]: false
in [60]: isinstance('abc', iterator)
out[60]: false
in [61]: isinstance(100, iterator)
out[61]: false
生成器都是 iterator 物件,但 list 、 dict 、 str 雖然是 iterable ,卻不是 iterator 。
把 list 、 dict 、 str 等 iterable 變成 iterator 可以使用 iter() 函式:
in [62]: isinstance(iter(), iterator)
out[62]: true
in [63]: isinstance(iter('abc'), iterator)
out[63]: true
python學習總結 物件導向高階
類屬性和例項屬性關係 1 類屬性和例項屬性關係 1 例項屬性 例項物件獨有的屬性 2 類屬性 類名訪問類屬性 3 例項中無同名屬性時,可訪問到類屬性,當定義同名例項屬性時,則無法訪問 4 常用的查詢指令 1 vars 檢視例項內屬性 2 dir 顯示類屬性和所有例項屬性 3 type 顯示型別 方法...
物件導向 高階
json方式的物件導向 json 把方法包在json裡 json物件導向 有人管他叫 命名空間 在公司裡 把同一類 的方法包在一起 拖拽和繼承 物件導向的拖拽 改寫原有的拖拽 繼承 asdf 拖拽 instanceof 檢視物件是某個類的例項 使用繼承 限制範圍的拖拽類 建構函式的偽裝 屬性的繼承 ...
物件導向高階
public class person public void print public class student extends person 重寫了父類方法 public void print public class demo public class demo 1.不能new這個類,只能靠...