• 迭代器


    迭代器:

      迭代就指的是一个重复的过程,每次一次重复都是基于上一次的结果而来。

      之前取值的都是基于索引关系,使用列表、字符串、元组

    li = ['a', 'b', 'c', 'd', 'e']
    #li = ('a', 'b', 'c', 'd', 'e')
    #li = 'hello'
    
    i = 0
    while i < len(li):
        print(li[i])
        i += 1

    但是这种取值方式对于字典,集合,文件对象,所以Python产生一种迭代的机制。

    为什么使用迭代器?

      为了找出一种通用的&可以不依赖索引的迭代取值方式。

    如何使用迭代器?

      可迭代对象,但凡内置有__iter__方法的对象可以被称为可迭代对象

      迭代器对象,既内置有__iter__方法,也同时内置__next__方法被称之为迭代器对象。

    关于__iter__方法:

      调用可迭代对象的__iter__方法会得到迭代器对象

      调用迭代器对象的__iter__方法会得到迭代器对象本身。

    4. 总结迭代器的优缺点:
    优点:
    1. 提供了一种通用的&可以不依赖于索引的迭代取值方式
    2. 同一时刻在内存中只有一个值,更加节省内存

    缺点:
    1. 取指定值不如索引灵活,并且迭代器是一次性的
    2. 无法预知迭代器数据的个数
    可迭代的对象: str,list,tuple,dict,set,文件对象
    迭代器对象: 文件对象
     可迭代的对象=====》迭代器对象:调用可迭代对象内置的__iter__方法会有一个返回值,该返回值就是对应的迭代器对象
    li = [1,2,3,4]
    dic = {'a':1}
    st = 'hello'
    tup = ('a',1)
    se = {'a','c','d'}
    iter_li = li.__iter__()
    iter_dic = dic.__iter__()
    iter_st = st.__iter__()
    iter_tup = tup.__iter__()
    iter_se = se.__iter__()
    
    f = open('a.txt',mode='w',encoding='utf-8')
    iter_f = f.__iter__()
    迭代器的内置方法__next__
    print(iter_dic.__next__())
    print(iter_dic.__next__())#超过元素个就会报错  StopIteration

    可以使用try  Except来检测报错

    while True:
        try:
            print(iter_st.__next__())
        except:
            break

    for又被称为迭代循环:在底层是将可迭代对象或迭代器装换为迭代器,再循环取值的工作原理。

    
    
  • 相关阅读:
    Codeforces 1491 D. Zookeeper and The Infinite Zoo (二进制处理)
    Codeforces 1479A. Searching Local Minimum(注意输入+二分)
    Codeforces 1480B. The Great Hero(阅读模拟题,注意数据范围和攻击顺序)
    Codeforces 1480A. Yet Another String Game (阅读理解题)
    windows 10 开启全盘瞬间索引功能
    JetBrains CLion C++ IDE连接wsl2(Ubuntu)时,报错"Unable to establish SSL connection"解决方案
    WorkFlowy 的 MarkDown 预览方案解决
    git 学习 完全学懂
    jeecgboot <j-popup
    面试之类加载器
  • 原文地址:https://www.cnblogs.com/msj513/p/9719837.html
Copyright © 2020-2023  润新知