zoukankan      html  css  js  c++  java
  • 6.迭代器

    比如for循环了1亿次,我用不了那么多数据,需要100一个的显示,就要用到迭代器

    1什么是迭代器

    迭代器是py中最具有特色的功能之一,是访问集合元素的一直方式

    迭代器是一个可以记住访问遍历的位置的对象
    从集合的第一个元素开始访问,知道集合中所有的元素被访问完毕
    迭代器只能从前向后一个一个的遍历,不能后退
    迭代器是一个能被next()函数调用,并不断返回下一个值的对象称为(迭代器)

    """
    iter()
    功能:把可迭代对象(str,list ,tuple,dict,set,range),转为一个迭代器对象
    参数:可迭代的对象(str,list ,tuple,dict,set,range)
    返回值:迭代器对象
    注意:迭代器一定是一个可迭代的对象,但是可跌代对象不一定是迭代器

    """

    2迭代器演示

    `f = ["a","b","c","d"]`
    
    #iter把可迭代对象转为迭代器使用
    res = iter(f)
    print(res,type(res))  #<list_iterator object at 0x000002B5DD986640> <class 'list_iterator'>
    
    
    
    

    3调用迭代器的方法 next list for

    1 .next函数调用迭代器,1次取1个值,直到把值取完

    print(next(res))  #a
    print(next(res))  #b
    

    2. list 直接取出迭代器中的所有数据

    res1 =list(res)
    print(res1)
    ['c', 'd']  #返回列表
    

    for 能遍历迭代器中的所有数据

    for i in res:
        print(i)  
    
    c
    d
    

    4 检查是不是迭代器

    from collections.abc import Iterator,Iterable

    • Iterable#检测试是不是 可迭代对象
    • Iterator#检测试是不是 一个迭代器
    from collections.abc import Iterator,Iterable
    f = ["a","b","c","d"]
    res = iter(f)
    
    varstr = '123456'
    r1 = isinstance(varstr,Iterable)    # True 是可迭代对象
    r2 = isinstance(varstr,Iterator)    # False 不是一个迭代器
    r3 = isinstance(res,Iterable)       # True 是可迭代对象  `#迭代器绝对是一个可迭代的对象,`
    r4 = isinstance(res,Iterator)       # True 是一个迭代器  `#迭代器绝对是一个可迭代的对象,`
    print(r1,r2)
    print(r3,r4)
    

    5 可迭代对象不一定是迭代器

    
    varstr = '123456
    next(varstr)
    
    Traceback (most recent call last):
      File "D:/py/test/gao/迭代器.py", line 36, in <module>
        next(varstr)
    TypeError: 'str' object is not an iterator
    
  • 相关阅读:
    mac 环境下adb的安装
    iOS开发Swift版本
    UILabel-Swift
    Android应用上架
    Android应用开发
    andriod
    Android 6.0 更新包与已安装应用的签名不一致
    苹果手机怎么录屏 iOS12设置录屏
    Siri语音唤醒的开启与语音矫正
    Git的工作流程
  • 原文地址:https://www.cnblogs.com/john5yang/p/15629459.html
Copyright © 2011-2022 走看看