• 迭代器


    迭代器

    一、什么是迭代

    迭代迭代更新换代, 重复, 基于上一次的结果推出下一次的结果

    二、可迭代对象

    具有__iter__()方法的就是可迭代对象,除数字类型和函数类型都是可迭代对象

    x = 1  # 不可迭代对象
    s = 'jiayi'  # 可迭代对象
    lt = [1, 2, 3]  # 可迭代对象
    dic = {'a': 1, 'b': 2}  # 可迭代对象
    tup = (1,)  # 元组只有一个元素必须得加逗号# 可迭代对象
    se = {1, 2, 3}  # 可迭代对象
    f = open('time.py')  # 可迭代对象
    

    eg:

    s = 'jiayi'
    s_iter = s.__iter__()  #将它变为迭代器对象
    print(s_iter.__next__())  #基于索引(基于上一次结果),通过__next__进行迭代
    print(s_iter.__next__())
    print(s_iter.__next__())
    print(s_iter.__next__())
    print(s_iter.__next__())
    --------------------------------------------------------------
    j
    i
    a
    y
    i
    

    二、迭代器对象

    具有__iter__()方法并且具有__next__()的就是迭代器对象,只有文件是迭代器对象

    s = 'jiayi'  # 可迭代对象,不属于迭代器对象
    lt = [1, 2, 3]  # 可迭代对象,不属于迭代器对象
    dic = {'a': 1, 'b': 2}  # 可迭代对象,不属于迭代器对象
    tup = (1,)  # 元组只有一个元素必须得加逗号# 可迭代对象,不属于迭代器对象
    se = {1, 2, 3}  # 可迭代对象,不属于迭代器对象
    f = open('time.py')  # 可迭代对象,迭代器对象
    

    三、for循环原理(迭代循环)

    先举个例子(上下代码其实就是一个东西)

    list = [1,2,3]
    list_iter = list.__iter__()  #将它变为迭代器对象
    while 1:
        try:
            print(list_iter.__next__())
        except StopIteration:  #对他进行异常捕捉
            break
            
    ============================================================
    for i in lt:    # 不依赖索引取值,而是迭代取值
        print(i)
        
        '''
    1. 把lt(可迭代对象/迭代器对象)用__iter__方法转换成迭代器对象
    2. 使用__next__取出迭代器里的所有值
    3. 使用__next__方法取尽迭代器中的所有值,一定会报错,通过异常捕捉退出while循环
        '''
    

    可迭代对象无论迭代多少次,他的内存地址是不变的

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

  • 相关阅读:
    博主简介
    P1005 矩阵取数游戏
    P2051 [AHOI2009]中国象棋
    P1070 道路游戏
    P2577 [ZJOI2005]午餐
    P1169 [ZJOI2007]棋盘制作
    P1273 有线电视网
    P2467 [SDOI2010]地精部落
    P2331 [SCOI2005]最大子矩阵
    P2216 [HAOI2007]理想的正方形
  • 原文地址:https://www.cnblogs.com/yanjiayi098-001/p/11340728.html
Copyright © 2020-2023  润新知