Python 列表和迭代器区别
生活随笔
收集整理的這篇文章主要介紹了
Python 列表和迭代器区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 列表不論遍歷多少次,表頭位置始終是第一個元素;
- 迭代器遍歷結束后,不再指向原來的表頭位置,而是為最后元素的下一個位置。
通過 type 關鍵字可以看到列表和迭代器的類型是不同的。
In [1]: a = [1,2,3]In [2]: b = iter(a)In [3]: type(a)
Out[3]: listIn [4]: type(b)
Out[4]: list_iterator
通過 for 循環迭代列表和迭代器,可以發現,列表每次迭代都是從第一個元素開始,而迭代器在迭代結束后再次迭代就不會有任何值。因為一旦迭代結束,就指向迭代器最后一個元素的下一個位置。
In [6]: for i in a:...: print(i)...:
1
2
3In [7]: for j in b:...: print(j)...:
1
2
3In [8]: for i in a:...: print(i)...:
1
2
3In [9]: for j in b:...: print(j)...: In [10]:
只有迭代器對象才能與內置函數 next 結合使用, next 一次,迭代器就前進一次,指向一個新的元素。
所以,要想迭代器 b 重新指向 a 的表頭,需要重新創建一個新的迭代器。
In [10]: b = iter(a)In [11]: next(b)
Out[11]: 1In [12]: next(b)
Out[12]: 2In [13]: next(b)
Out[13]: 3In [14]: next(b)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-14-adb3e17b0219> in <module>
----> 1 next(b)StopIteration: In [15]:
需要注意,我們無法通過調用 len 獲得迭代器的長度,只能迭代到最后一個末尾元素時,才知道其長度。
總結:遍歷列表,表頭位置始終不變;遍歷迭代器,表頭位置相應改變; next 函數執行一次,迭代對象指向就前進一次; StopIteration 觸發時,意味著已到迭代器尾部。
總結
以上是生活随笔為你收集整理的Python 列表和迭代器区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小说中好听的国家名字
- 下一篇: 蓬开头的成语有哪些啊?