zoukankan      html  css  js  c++  java
  • 迭代器-迭代对象-dir(a)可以查看该数据类型有多少种方法。range(10)在py3里就是一个迭代器,for循环实际就是迭代器的应用

    迭代器

    我们已经知道,可以直接作用于for循环的数据烈性有以下几种:

    一类是集合数据类型,如list、tuple、dict、set、str,bytes等;

    一类是generator,数据结构,包括生成器和带yield的generator function。

    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

    可以使用isinstance()判断一个对象是否是Iterable对象。

    而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,

    直到最后抛出StopIteration错误表示无法继续返回下一个值了。

    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

    dir(a)可以查看该数据类型有多少种方法。a是列表,是可迭代对象,但不是迭代器,因为没有next方法。

    可以使用isinstance()判断一个对象是否是Iterator对象

    生成器都是Iterator对象即迭代器,但list,dict,str虽然是迭代对象Iterable,但不是迭代器Iterator

    但是迭代器不都是生成器

    把list,dict,str等Iterable变成Iterator可以使用iter()函数

    在py3里,range(10)就是一个迭代器

    而在py2里,range(10)直接是一个列表[0,1,2,3,4,5,6,7,8,9]

    如果在py2里,想生成一个迭代器,那么需要写xrange(10)

    在py2里,f是打开文件的对象,f.xreadlines(),就是生成一个迭代器,就可以用f.next方法,而不是用f.read等方法了。

    Python的for循环本质上就是通过不断调用next()函数实现的,如下图:只不过for循环封装了迭代器

  • 相关阅读:
    RadAsm使用
    如何从外网访问内网
    装SQL server 2008问题解决
    820
    大三学生经验之谈
    ROM与RAM知识
    java mybatis学习一
    java Sprint boot 学习之一
    java读取配置到Hash表里
    数组乱序算法
  • 原文地址:https://www.cnblogs.com/itfat/p/7447457.html
Copyright © 2011-2022 走看看