Python迭代器是什麼及如何使用

PHPz
發布: 2023-05-12 13:19:06
轉載
1096 人瀏覽過

Python 迭代器

迭代器是一種對象,該對象包含值的可計數數字。

迭代器是可迭代的對象,這表示您可以遍歷所有值。

從技術上講,在 Python 中,迭代器是實作迭代器協定的對象,它包含方法 iter() 和 next()。

迭代器 VS 可迭代物件(Iterable)

列表、元組、字典和集合都是可迭代的物件。它們是可迭代的容器,您可以從中取得迭代器(Iterator)。

所有這些物件都有用於取得迭代器的iter() 方法:

實例

從元組傳回一個迭代器,並列印每個值:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))
登入後複製

運行實例

apple
banana
cherry
登入後複製

甚至連字串都是可迭代的對象,並且可以傳回迭代器:

##實例

字串也是可迭代的對象,包含一系列字元:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
登入後複製

運行實例

b
a
n
a
n
a
登入後複製

遍歷迭代器

我們也可以使用for 循環遍歷可迭代物件:

實例

迭代元組的值:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
登入後複製

執行實例

python_iterator_loop_1.py
apple
banana
cherry
登入後複製

實例

迭代字串中的字元:

mystr = "banana"

for x in mystr:
  print(x)
登入後複製

運行實例

python_iterator_loop_2.py
b
a
n
a
n
a
登入後複製

提示:for 循環實際上創建了一個迭代器對象,並為每個循環執行next() 方法。

建立迭代器

要把物件/類別建立為迭代器,必須為物件實作

iter() 和 next() 方法。

正如您在 Python 類別/物件 一章中學到的,所有類別都有名為

init() 的函數,它允許您在建立物件時進行一些初始化。

iter() 方法的作用相似,您可以執行操作(初始化等),但必須始終傳回迭代器物件本身。

next() 方法也允許您執行操作,並且必須傳回序列中的下一個項目。

實例

建立一個傳回數字的迭代器,從1 開始,每個序列將增加1(返回1、2、3、4、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))
登入後複製

運行實例

python_iterator_create_1.py
1
2
3
4
5
登入後複製

StopIteration

#如果你有足夠的next() 語句,或者在for 循環中使用,則上面的例子將永遠進行下去。

為了防止迭代永遠進行,我們可以使用 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)
登入後複製

運行實例

python_iterator_create_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
登入後複製

以上是Python迭代器是什麼及如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!