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)
相关文章
相关标签/搜索