首页  

python3-004 迭代器和生成器     所属分类 python 浏览量 96
迭代器与生成器

迭代 访问集合
从集合的第一个元素开始访问,直到所有的元素被访问完结束
迭代器只能往前不会后退
迭代器 两个基本的方法  iter() 和 next()

list = [1,2,3]
it = iter(list)
print(next(it))
print(next(it))
print(next(it))
# StopIteration
print(next(it))

it = iter(list)
for i in it:
  print(i,end=" ")

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 

__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成

__next__() 方法 返回下一个元素

创建一个返回数字的迭代器,初始值为 1,逐步递增 1


class MyInts:
  def __iter__(self):
    self.value = 0
    return self

  def __next__(self):
    current = self.value
    self.value += 1
    if current >= 3: 
      raise StopIteration
    return current


myInts = MyInts() it = iter(myInts) print(next(it)) for i in it: print(i,end=" ")
使用 yield 的函数被称为生成器 generator 生成器是一个返回迭代器的函数,只能用于迭代操作,生成器就是一个迭代器 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行 def fab(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 for n in fab(5): print n

上一篇     下一篇
python3-001 基础语法

python3-002 基本数据类型

python3-003 条件和循环

python3-005 函数

python3 str 内置函数调用错误

python3-006 输入输出