python中可迭代對象和列表


 

 什么是可迭代對象?什么是迭代器?

  1. 如果一個對象擁有__iter__方法,其是可迭代對象;做個比喻,一本書可以一頁一頁翻,是可迭代對象;一塊石頭,是不可迭代對象。列表,字符串,元組,字典都是可迭代對象。_iter_方法:Python iter() 函數 | 菜鳥教程 (runoob.com)
  2. 如果一個對象擁有__iter__方法和next方法,其是迭代器;做個比喻,一個機槍彈夾有N發子彈,是一個列表,你可以隨意取用彈夾里的子彈(元素),因為你可以全部看到 ;一個機槍彈夾+機槍是一個迭代器(彈夾在機槍里,看不到也取不出來),要取用某一顆子彈(元素),只有從第一顆開始,把前面的全部打出來才能取。_iter_方法就相當於把彈夾裝機槍里的動作,封裝動作;next方法就相當於機槍開槍的動作。參考:Python next() 函數 | 菜鳥教程 (runoob.com)

 迭代器的特性

  1. 迭代器是一個可以記住遍歷的位置對象
  2. 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。這也是它和列表最大的不同!
  3. 迭代器有兩個基本的方法:iter() 和 next()
  4. 字符串列表元組對象都可用於創建迭代器:

 

>>> 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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM