什么是可迭代對象?什么是迭代器?
- 如果一個對象擁有__iter__方法,其是可迭代對象;做個比喻,一本書可以一頁一頁翻,是可迭代對象;一塊石頭,是不可迭代對象。列表,字符串,元組,字典都是可迭代對象。_iter_方法:Python iter() 函數 | 菜鳥教程 (runoob.com)
- 如果一個對象擁有__iter__方法和next方法,其是迭代器;做個比喻,一個機槍彈夾有N發子彈,是一個列表,你可以隨意取用彈夾里的子彈(元素),因為你可以全部看到 ;一個機槍彈夾+機槍是一個迭代器(彈夾在機槍里,看不到也取不出來),要取用某一顆子彈(元素),只有從第一顆開始,把前面的全部打出來才能取。_iter_方法就相當於把彈夾裝機槍里的動作,封裝動作;next方法就相當於機槍開槍的動作。參考:Python next() 函數 | 菜鳥教程 (runoob.com)
迭代器的特性
- 迭代器是一個可以記住遍歷的位置的對象。
- 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。這也是它和列表最大的不同!
- 迭代器有兩個基本的方法:iter() 和 next()。
- 字符串,列表或元組對象都可用於創建迭代器:
>>> list=[1,2,3,4] >>> it = iter(list) # 創建迭代器對象 >>> print (next(it)) # 輸出迭代器的下一個元素 1 >>> print (next(it)) 2 >>>
迭代器對象可以使用常規for語句進行遍歷:
#!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 創建迭代器對象 for x in it: print (x, end=" ")
也可以使用 next() 函數:
#!/usr/bin/python3 import sys # 引入 sys 模塊 list=[1,2,3,4] it = iter(list) # 創建迭代器對象 while True: try: print (next(it)) except StopIteration: sys.exit()
如果從彈夾中取出子彈呢?也就是可迭代對象如何分解出所有元素呢?參考:python從可迭代對象中取值 - 年輕人——001 - 博客園 (cnblogs.com)