Python 迭代器(Iterator)

版權全部,未經許可,禁止轉載python


章節


Python 迭代器(Iterator)

迭代器是一個包含有限數量值的對象。正則表達式

迭代器是一個能夠被迭代的對象,能夠遍歷迭代器中的全部值。函數

從技術上講,在Python中,迭代器是實現迭代器協議的對象,該協議由方法__iter__()__next__()組成。code

可迭代的數據類型

列表、元組、字典和集合都是可迭代的對象,能夠從其中得到迭代器。對象

全部這些對象均可用iter()方法獲取迭代器:繼承

示例開發

從元組中獲取一個迭代器,遍歷並打印每一個值:字符串

mytuple = ("自行車", "汽車", "高鐵")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

字符串也是可迭代對象,能夠從中獲取迭代器:get

示例it

使用迭代器遍歷字符串:

mystr = "自行車"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))

for循環迭代

咱們也能夠使用for循環來遍歷一個迭代器:

示例

迭代元組的值:

mytuple = ("自行車", "汽車", "高鐵")

for x in mytuple:
  print(x)

示例

迭代字符串的字符:

mystr = "自行車"

for x in mystr:
  print(x)

for循環內部實際上進行了迭代器的獲取,及next()方法的調用。

建立迭代器

一個對象要建立迭代器,變成可迭代的,必須實現方法:__iter__()__next__()

__iter__()方法必須始終返回迭代器對象自己。

__next__()方法必須返回序列中的下一項。

示例

建立一個返回數字的迭代器,從1開始,每一個序列項遞增1(返回一、二、三、四、5等):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
    
  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

StopIteration

上面示例next()調用將永遠繼續,咱們能夠使用StopIteration語句中止迭代。

__next__()方法中,咱們能夠根據迭代次數添加終止條件來引起錯誤:

示例

迭代20次後中止:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
    
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)
相關文章
相關標籤/搜索