日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python迭代器如何實現(xiàn)

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結(jié)束。迭代器只能往前不會后退。

迭代器有兩個基本的方法:iter() 和 next()。

字符串,列表或元組對象都可用于創(chuàng)建迭代器:

實例(Python 3.0+)

>>> list=[1,2,3,4]
>>> it = iter(list)    # 創(chuàng)建迭代器對象
>>> print (next(it))   # 輸出迭代器的下一個元素
1
>>> print (next(it))
2
>>>

迭代器對象可以使用常規(guī)for語句進行遍歷:

實例(Python 3.0+)

#!/usr/bin/python3
 
list=[1,2,3,4]
it = iter(list)    # 創(chuàng)建迭代器對象
for x in it:
    print (x, end=" ")

執(zhí)行以上程序,輸出結(jié)果如下:

1 2 3 4

相關(guān)推薦:《Python基礎(chǔ)教程》

也可以使用 next() 函數(shù):

實例(Python 3.0+)

#!/usr/bin/python3
import sys         # 引入 sys 模塊
 
list=[1,2,3,4]
it = iter(list)    # 創(chuàng)建迭代器對象
 
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

執(zhí)行以上程序,輸出結(jié)果如下:

1
2
3
4

創(chuàng)建一個迭代器

把一個類作為一個迭代器使用需要在類中實現(xiàn)兩個方法 __iter__() 與 __next__() 。

如果你已經(jīng)了解的面向?qū)ο缶幊?,就知道類都有一個構(gòu)造函數(shù),Python 的構(gòu)造函數(shù)為 __init__(), 它會在對象初始化的時候執(zhí)行。

__iter__() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現(xiàn)了 __next__() 方法并通過 StopIteration 異常標識迭代的完成。

__next__() 方法(Python 2 里是 next())會返回下一個迭代器對象。

創(chuàng)建一個返回數(shù)字的迭代器,初始值為 1,逐步遞增 1:

實例(Python 3.0+)

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))

執(zhí)行輸出結(jié)果為:

1
2
3
4
5

StopIteration

StopIteration 異常用于標識迭代的完成,防止出現(xiàn)循環(huán)的情況,在 __next__() 方法中我們可以設(shè)置在完成指定循環(huán)次數(shù)后觸發(fā) StopIteration 異常來結(jié)束迭代。

在 20 次迭代后停止執(zhí)行:

實例(Python 3.0+)

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)

執(zhí)行輸出結(jié)果為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

當前名稱:創(chuàng)新互聯(lián)Python教程:python迭代器如何實現(xiàn)
文章路徑:http://www.dlmjj.cn/article/cdpghoh.html