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

    一、可迭代对象

    可以直接作用于for循环的对象统称为可迭代对象,即iterable

    1、常见的可迭代对象

    常见迭代对象:str list tuple dict set range

    2、判断可迭代对象的方法

    方式一:dir(对象)

    如果含有__iter__,那这个对象就叫做可迭代对象

    str1='hello'
    print('__iter__'in dir(str1))#True
    
    li=['alex','sb']
    print('__iter__'in dir(li))#True
    
    num=2018
    print('__iter__'in dir(num))#Flase

    方式二:isinstance()方法

    from collections import Iterable
    str1='hello'#字符串为可迭代对象
    print(isinstance(str1,Iterable))#True
    
    li=['alex','hehe']#列表为可迭代对象
    print(isinstance(li,Iterable))#True
    
    num=2018
    print(isinstance(num,Iterable))#False

    二、迭代器

    对于序列类型:字符串列表元组,我们可以使用索引的方式迭代取出其包含的元素。但对于字典、集合、文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖索引的迭代方式,这就是迭代器

    可迭代对象执行obj.iter()得到的结果就是迭代器对象

    迭代器对象指的是即内置有__iter__又内置有__next__方法的对象

    1、可迭代对象转换迭代器

    str1='ABC'
    strIter=str1.__iter__()#得到迭代器对象,迭代器对象即有__iter__又有__next__
    print(strIter)#结果为迭代器
    print(strIter.__next__())
    print(strIter.__next__())
    print(strIter.__next__())

    2、迭代器的优缺点

    优点:

      提供一种统一的、不依赖于索引的迭代方式

      惰性计算,节省内存

    缺点:

      无法获取长度(只有在next完毕才知道到底有几个值)

      一次性的,只能往后走,不能往前退

  • 相关阅读:
    Android xml text 预览属性
    GridView、ListView默认的点击背景修改
    java.util.ConcurrentModificationException
    Android 菜单定制使用小结
    Panel 中加载窗体
    git代理配置
    TableLayoutPanel 动态添加 行 列
    C# 左右补零
    Dart Map<> 添加 元素
    Mac 永久添加 环境变量方法
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9171681.html
Copyright © 2011-2022 走看看