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

  • 相关阅读:
    构造函数+this关键字+super关键字
    封装
    数组+方法
    流程控制语句
    java运算符+引用数据类型
    java的基础安装
    mysql数据库连接
    mysql数据库约束
    mysql数据库
    练习010:按奇偶排序数组
  • 原文地址:https://www.cnblogs.com/wbw-test/p/10535389.html
Copyright © 2011-2022 走看看