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

  • 相关阅读:
    mongo的csv文件参考
    apache安装配置
    部署Java的运行环境
    ubuntu下没有ping命令
    webbench压力测试
    判断当前是否是微信浏览器,还是APP客户端
    PHP uniqid 高并发生成不重复唯一ID
    http_build_query()函数使用方法
    防XSS攻击
    PHP中json_encode()使用须知,JSON数组和JSON对象
  • 原文地址:https://www.cnblogs.com/wbw-test/p/10535389.html
Copyright © 2011-2022 走看看