码迷,mamicode.com
首页 > 编程语言 > 详细

python_4

时间:2019-12-24 09:33:59      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:highlight   定义   ini   一个   img   迭代   info   nbsp   int   

1.迭代器:通过iter()方法获得了list的迭代对象,然后就可以通过next()方法来访问list中的元素了,当容器中没有可访问元素时,会抛出StopIteration异常终止迭代器

data = [1,2,3,4,5]
itr = iter(data)
print(itr.__next__())

2.自定义迭代器:需要实现__iter__,__next__方法

class CustomRange:
  def _init__(self, length):
    self.inx = 0
    self.length = length
  def __iter__(self):
    return self
  def __next__(self):
    if self.inx < self.length:
      val = self.idx
      self.idx += 2
      return val
    else:
      raise StopIteration

if __name__ == "__main__":
  cr = CustomRange(20)
  print(next(cr))
  print(next(cr))

3.生成器,yield

技术图片

 

4.生成器与迭代器的区别:

> 通过实现迭代器协议对应的__iter__()和__next__()方法,可以自定义迭代器。对于可迭代对象,for语句可以通过iter()方法获取迭代器,并且通过next方法获取容器的下一个元素

> 生成器是一种特殊的迭代器,内部支持了生成器协议,不需要明确定义__iter__()和__next__()方法

> 生成器通过生成器函数产生,生成器函数可以通过常规的def来定义,但是不用return返回,而是用yield一次返回一个结果

python_4

标签:highlight   定义   ini   一个   img   迭代   info   nbsp   int   

原文地址:https://www.cnblogs.com/n-n5980/p/12089497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!