zoukankan      html  css  js  c++  java
  • python的迭代器

    迭代器对象一定实现了__iter__()、__next__()方法,可迭代对象一定实现了__iter__()方法。

    range实现了__iter__方法,但是没有实现__next__()方法,返回的是range对象,列表、元组等序列都是可迭代对象,而不是迭代器对象,仅仅实现了__iter__()方法.

    迭代器与可迭代对象的关联:

    1.一个实现了 __iter__() 方法的对象,就意味着它一定是可迭代的。

    2.迭代器对象实现了 __next__() 方法,从而使得这个对象是迭代器对象

    3.可迭代对象的__iter__()方法返回的是一个迭代器实例,所以当iter()内置函数作用于列表等可迭代对象时,底层实现上解释器调用__iter__()方法后返回一个迭代器对象。而迭代器对象的__iter__()方法返回的是一个self,也就是说返回的是对象本身。

    1 a = [1, 2, 4]
    2 b = iter(a)
    3 print(type(b)) # 输出<class 'list_iterator'>
    4 print(next(b))  # 输出1
    5 print(next(b)) # 输出2

    参考:1、https://mp.weixin.qq.com/s/mDh15ML7YyONc62sYSD3tw

          2、https://mp.weixin.qq.com/s/L49EnYQNhrXu0XKBGJmF7w

  • 相关阅读:
    全景转换工具
    Leetcode 215.数组中的第k个最大元素
    Leetcode 214.最短回文串
    Leetcode 213.大家劫舍II
    Leetcode 212.单词搜索II
    Leetcode 211.添加与搜索单词
    Leetcode 209.长度最小的子数组
    Leetcode 208.实现前缀树
    Leetcode 207.课程表
    Leetcode 206.反转链表
  • 原文地址:https://www.cnblogs.com/jianglinliu/p/10465837.html
Copyright © 2011-2022 走看看