python的迭代器 python 迭代器

2021-10-11 12:26:38 字數 1507 閱讀 3534

在介紹迭代器之前,先說明下迭代的概念:

迭代:通過for迴圈遍歷物件的每乙個元素的過程。

python的for語法功能非常強大,可以遍歷任何可迭代的物件。

在python中,list/tuple/string/dict/set/bytes都是可以迭代的資料型別。

可以通過collections模組的iterable型別來判斷乙個物件是否可迭代:

from collections importiterableprint(isinstance('abcd', iterable))print(isinstance([1, 2, 3], iterable))print(isinstance(123, iterable))

結果:true

true

false

迭代器迭代器是一種可以被遍歷的物件,並且能作用於next()函式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往後遍歷不能回溯,不像列表,你隨時可以取後面的資料,也可以返回頭取前面的資料。迭代器通常要實現兩個基本的方法:iter() 和 next()。

字串,列表或元組物件,甚至自定義物件都可用於建立迭代器:

lis = [1, 2, 3, 4]

it= iter(lis) #使用python內建的iter()方法建立迭代器物件

print(next(it))print(next(it))print(next(it))print(next(it))#print(next(it)) #當後面沒有元素可以next的時候,彈出錯誤

結果:traceback (most recent call last):

file "c:\users\administrator\desktop\test_r.py", line 89, in

print(next(it)) #當後面沒有元素可以next的時候,彈出錯誤

stopiteration

或者使用for迴圈遍歷迭代器:

lis1 = [1, 2, 3, 4]

it1= iter(lis1) #建立迭代器物件

for i init1:print(i,end=" ")

結果:1 2 3 4

很多時候,為了讓我們自己寫的類成為乙個迭代器,需要在類裡實現__iter()__和__next()__方法。

總結:python的迭代器表示的是乙個元素流,可以被next()函式呼叫並不斷返回下乙個元素,直到沒有元素時丟擲stopiteration錯誤。可以把這個元素流看做是乙個有序序列,但卻不能提前知道序列的長度,只能不斷通過next()函式得到下乙個元素,所以迭代器可以節省記憶體和空間。

迭代器(iterator)和可迭代(iterable)的區別:

凡是可作用於for迴圈的物件都是可迭代型別;

凡是可作用於next()函式的物件都是迭代器型別;

list、dict、str等是可迭代的但不是迭代器,因為next()函式無法呼叫它們。可以通過iter()函式將它們轉換成迭代器。

python的for迴圈本質上就是通過不斷呼叫next()函式實現的。

python中迭代器的基本方法 Python迭代器

迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...

python的迭代器 Python 迭代器

迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...

python的迭代器 Python 迭代器

概述迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。延遲計算或惰性求值 lazy evaluation 迭代器不要求你事先準備好整個迭代過程中所有的元素。僅僅是在迭代至某個元素時才計算該元素,而在這之前或之後,元素可以不存在或...