• 迭代器


    一、可迭代对象:可以直接作用于for循环的对象称为可迭代对象:Iterable

    比如:list、tuple、dict、set、str、生成器

    可以使用isinstance()来判断:

    >>> from collections import Iterable
    >>> isinstance([],Iterable)
    True
    >>> isinstance((),Iterable)
    True
    >>> isinstance('abc',Iterable)
    True
    >>> isinstance(x for x in range(10),Iterable)
    SyntaxError: Generator expression must be parenthesized if not sole argument
    >>> isinstance((x for x in range(10)),Iterable)
    True
    >>> isinstance([x for x in range(10),Iterable)
           
    SyntaxError: invalid syntax
    >>> isinstance([x for x in range(10)],Iterable)
    True
    >>> isinstance(100,Iterable)
    False
    >>> isinstance('',Iterable)
    True
    >>> isinstance(0.2,Iterable)
    False
    >>> isinstance({},Iterable)
    True
    >>> 

    二、迭代器:不但可以作用于for循环,还可以通过next()函数调用不断返回下一个值的对象称为迭代器:Iterator。

    也可以通过isinstance()判断一个对象是否是Iterator对象,可以看到list、dict、tuple、str对象虽然是Iterable,但是不是Iterator:

    >>> from collections import Iterator
    >>> isinstance((x for x in range(10)),Iterator)
    True
    >>> isinstance([],Iterator)
    False
    >>> isinstance({},Iterator)
    False
    >>> isinstance((),Iterator)         
    False
    >>> 
    >>> isinstance('abcd',Iterator)
    False
    >>> 

    可以通过iter()函数将可迭代对象转换为迭代器,参数必须是可迭代的对象,否则会报错:

    >>> isinstance(iter([]),Iterator)
    True
    >>> isinstance(iter({}),Iterator)
    True
    >>> isinstance(iter(()),Iterator)
    True
    >>> isinstance(iter('abc'),Iterator)
    True
    >>> isinstance(iter(123),Iterator)
    Traceback (most recent call last):
      File "<pyshell#38>", line 1, in <module>
        isinstance(iter(123),Iterator)
    TypeError: 'int' object is not iterable
    >>> 

           

  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/OnOwnRoad/p/5365747.html
Copyright © 2020-2023  润新知