python_4

Posted n-n5980

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_4相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段

python小知识片段

python小知识片段

常用python日期日志获取内容循环的代码片段