zoukankan      html  css  js  c++  java
  • Iterable/Iterator傻傻分不清

    区别可迭代对象和迭代器

    1、判断是否可以迭代

    from collections import Iterable
    def fid(times):
    n = 0
    a , b = 0,1
    while n < times:
    yield b
    a,b = b , a+b
    n += 1
    return 'done'

    F = fid(10)
    A = []
    B = "asd"
    print(isinstance(A,Iterable))
    print(isinstance(B,Iterable))
    print(isinstance(F,Iterable))

     结果:

    均为True

    总结:凡是可以作用于for循环的对象都是Iterable类型,即可迭代对象

    2、迭代器

    from collections import Iterator
    def fid(times):
        n = 0
        a , b = 0,1
        while n < times:
            yield b
            a,b = b , a+b
            n += 1
        return 'done'
    
    F = fid(10)
    A = []
    B = "asd"
    print(isinstance(A,Iterator))
    print(isinstance(B,Iterator))
    print(isinstance(F,Iterator))

     结果:

    False
    False
    True

    总结:凡是可以作用于next()函数的对象都是Iterator类型,也就是迭代器

    3、可迭代对象转换为迭代器,iter()函数

    from collections import Iterator
    def fid(times):
        n = 0
        a , b = 0,1
        while n < times:
            yield b
            a,b = b , a+b
            n += 1
        return 'done'
    
    F = fid(10)
    A = []
    B = "asd"
    print(isinstance(iter(A),Iterator))
    print(isinstance(iter(B),Iterator))
    print(isinstance(F,Iterator))

    结果:

    均为True

    总结,可迭代类型可通过iter()函数获得一个迭代器

    可迭代对象Iterable和迭代器Iterator最大的区别在于是否可作用于next()函数,它们均可作用于for循环

  • 相关阅读:
    转载:linux or unit 连接 windows的远程桌面-rdesktop(略有修改)
    Excel技巧
    Linux实用配置(ubuntu)
    转载:VMware linux 虚拟机中修改MAC地址
    windows技巧
    cdoj1099
    hdu1160(问题)
    c#学习笔记
    hdu1176
    qsort(),sort() scanf();
  • 原文地址:https://www.cnblogs.com/wbw-test/p/10535389.html
Copyright © 2011-2022 走看看