• 迭代器


    • 可迭代对象Iterable

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:
    一类是集合数据类型,如list,tuple,dict,set,str等;
    一类是generator,包括生成器何带yield的generator function。
    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
    可以使用isinstance()判断一个对象是否是Iterable对象

    from collections import  Iterable
    a = isinstance([],Iterable)#True
    b = isinstance({},Iterable)#True
    c = isinstance("abc",Iterable)#True
    d = isinstance((x for x in range(10)),Iterable)#True
    e = isinstance(100,Iterable)#False
    • 迭代器:Iterator

    而生成器不但可以作用于for循环,还可以被next(0函数不断调用饼返回下一值,知道最后跑出StopIteration错误表示无法继续返回下一个值了。
    可以被next()函数调用并不断返回下一个值的对象成为迭代器:Iterator
    可以使用isinstance()判断一个对象是否是Iterator对象:

    from collections import  Iterator
    a = isinstance((x for x in range(10)),Iterator)#True
    b = isinstance({},Iterator)#False
    c = isinstance("abc",Iterator)#False
    • iter():Iterable变成Iterator

    生成器都是Iterator对象,但是list,dict,str虽然是Iterable,却不是Iterator
    把list、dict、str等Iterable变成Iterator可以使用iter()函数:

    from collections import  Iterator
    a = isinstance((x for x in range(10)),Iterator)#True
    b = isinstance(iter({}),Iterator)#True
    c = isinstance(iter("abc"),Iterator)#True
    for x in [1,2,3,4,5]:
        print(x)
    print("--------上面表达式实际上就是相当于下面----------")
    #iter()获得Iterator对象
    it = iter([1,2,3,4,5])
    while True:
        try:
            #获得下一个值
            x = next(it)
            print(x)
        except StopIteration:
            #遇到StopIteration就退出循环
            break
  • 相关阅读:
    u-boot.lds分析
    u-boot的makefile中的一些目录的设定,以及涉及的shell,make语法。
    u-boot入门第一步,分析mkconfig
    uboot学习——Makefile里的echo使用!
    Linux下的打包与压缩和tar命令!
    关于undefined reference的问题
    JZ2440 编译Uboot1.1.6 undefined reference to ‘raise’
    POJ 1094 Sorting It All Out
    链式前向星
    Codeforces Round #197 (Div. 2) A~D
  • 原文地址:https://www.cnblogs.com/cheng662540/p/8082533.html
Copyright © 2020-2023  润新知