美文网首页
【Python】可迭代对象 vs 迭代器

【Python】可迭代对象 vs 迭代器

作者: 小笨笨的花花 | 来源:发表于2022-03-22 10:55 被阅读0次

    可迭代对象 Iterable

    可直接作用于for循环的对象 ,iterable。可以用isinstance()去判断一个对象是否为iterable对象

    可作用于for循环的数据类型有2种:

    1. 集合数据类型, list tuple dict set string
    2. generator,包括生成器和带yield的generator function
    from collections.abc import Iterable
    
    print(isinstance([], Iterable))
    print(isinstance((), Iterable))
    print(isinstance('abcs', Iterable))
    print(isinstance({'a': 1}, Iterable))
    print(isinstance(1, Iterable))
    print(isinstance((x for x in range(10)), Iterable))
    

    迭代器 Iterator

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

    from collections.abc import Iterator
    
    print(isinstance('abc', Iterator))  # false
    print(isinstance([], Iterator))  # false
    print(isinstance({}, Iterator))  # false
    print(isinstance((), Iterator))  # false
    print(isinstance((x for x in range(10)), Iterator))  # True
    
    l = (x for x in range(10))
    print(next(l))
    print(next(l))
    
    # 转成Iterator对象
    a = iter([1, 2, 3, 4, 5])
    print(next(a))
    print(next(a))
    
    print('-' * 50)
    print(isinstance(iter([]), Iterator))  # True
    print(isinstance(iter(()), Iterator))  # True
    print(isinstance(iter(''), Iterator))  # True
    print(isinstance(iter({}), Iterator))  # True
    

    小结

    Iterable VS Iterator

    相关文章

      网友评论

          本文标题:【Python】可迭代对象 vs 迭代器

          本文链接:https://www.haomeiwen.com/subject/mtxiiktx.html