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循环

  • 相关阅读:
    9.5---所有字符串的排列组合(CC150)
    9.4---集合子集(CC150)
    9.3---魔术索引(CC150)
    5.3(2)----机器人走方格2(CC150)
    9.2---机器人走方格(CC150)
    9.1---上楼梯(CC150)
    5.3---找最近的两个数(CC150)
    5.8---像素设定(CC150)
    7.4---加法替代运算(CC150)
    4.9---二叉树路径和(CC150)
  • 原文地址:https://www.cnblogs.com/wbw-test/p/10535389.html
Copyright © 2011-2022 走看看