当前位置:  首页>> 技术小册>> Python合辑9-判断和循环

通常接触到的迭代器有序列,比如字符串、列表等等,利用iter()方法可以构建一个迭代器,与之匹配的next()方法可以迭代返回迭代器内的值,并将返回值弹出迭代器。

  1. In [1]: it = iter('python')
  2. In [2]: print(it)
  3. <str_iterator object at 0x00000187ADA75A00>
  4. In [3]: next(it)
  5. Out[3]: 'p'
  6. In [4]: next(it)
  7. Out[4]: 'y'

当next方法迭代到最后一个值时,继续调用next方法会弹出报错。当然也可以利用for循环迭代输出:

  1. In [6]: for i in it:
  2. ...: print(i)
  3. t
  4. h
  5. o
  6. n

如果深入了解Python之后会发现生成器用起来会更加方便,结合函数即可。生成器的关键字为yield,生成器也具有next()方法,并且可以利用for循环迭代输出。

  1. In [8]: def reverse(data):
  2. ...: for i in range(len(data)-1,-1,-1):
  3. ...: yield data[i]
  4. In [9]: gen = reverse('mao')
  5. In [10]: print(gen)
  6. <generator object reverse at 0x00000187AD99FDD0>
  7. In [11]: next(gen)
  8. Out[11]: 'o'
  9. In [12]: for i in gen:
  10. ...: print(i)
  11. a
  12. m

用小括号括起来的一个表达式可以用来创建一个生成器,下面将讲述如何来书写各种的表达式。

  1. In [14]: gen2 = (i for i in range(0,5))
  2. In [15]: print(gen2)
  3. <generator object <genexpr> at 0x00000187ADA18D60>