Python之迭代器
迭代器(?iterator)
——是訪問集合元素的一種方式,迭代器從集合的第一個元素開始訪問,直到所有元素被訪問結束。并且,迭代器只能向前訪問。
- 優點:不要求事先準備好整個迭代過程中的所有元素,迭代器僅僅在迭代到某個元素時才計算該元素。在這之前和之后,元素可以不存在或者被銷毀。這一大優點使迭代器特別適合用于遍歷一些巨大的或是無限的集合。
- 迭代器更大的功勞是:提供一個統一的訪問集合的接口,只要是定義了__iter__()方法對象,就可以使用迭代器訪問。
- 迭代器有兩個基本的方法:
使用迭代器
- 使用內建函數iter(iterable)可以獲取迭代器對象:
| 1 2 3 4 | >>> list?= range(5) >>> it = iter(list) >>> it <listiterator object at?0x01A63110> |
- 使用next()方法可以訪問下一個元素:
| 1 2 3 4 5 6 | >>> it.next() 0 >>> it.next() 1 >>> it.next() 2 |
- python處理迭代器越界是拋出StopIteration異常:
| 1 2 3 4 5 6 7 8 9 10 11 12 | >>> it.next() 3 >>> it.next <method-wrapper?'next'?of listiterator object at?0x01A63110> >>> it.next() 4 >>> it.next() ? Traceback (most recent call last): ??File?"<pyshell#27>", line?1, in <module> ????it.next() StopIteration |
- 使用迭代器進行遍歷:
>>>list = range(5)
>>>it = iter(list)try:
? ? ? ? ? ? ?while?True:
? ? ? ? ? ? ? ? ? ?val = it.next()
? ? ? ? ? ? ?print?valexcept?StopIteration:
? ? ? ? pass
結果:
| 1 2 3 4 5 6 | >>> 0 1 2 3 4 |
?
- Python專門為for關鍵字做了迭代器的語法糖。
在for循環中,Python將自動調用工廠函數iter()獲得迭代器,自動調用next()獲取元素,還完成了檢查StopIteration異常的工作。
如下:
>>> a = (1, 2, 3, 4)
>>> for?key in?a:
??????????print?key
1
2
3
4
* 解析:首先python對關鍵字in后的對象調用iter函數迭代器,然后調用迭代器的next方法獲得元素,直到拋出StopIteration異常。
- ?默認情況下,dict迭代的是key(for key in d);
? ?如果要迭代value,可以用for value in d.itervalues();
? ?如果要同時迭代key和value,可以用for k, v in d.iteritems()。
- ?Python內置的enumerate函數可以把一個list變成索引-元素對,這樣就可以在for循環中同時迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']):
... ????print i, value
...
0 ?A
1 ?B
2 ?C
- 內建的isinstance函數可以判斷一個變量是不是字符串:
>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False
轉載于:https://www.cnblogs.com/sunshine-blog/p/8318788.html
總結
以上是生活随笔為你收集整理的Python之迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过putty软件远程登录并且控制l
- 下一篇: Python之面向对象四