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

    迭代器

    一、什么是迭代

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

    二、可迭代对象

    具有__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循环
        '''
    

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

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

  • 相关阅读:
    POJ 2431 Expedition(探险)
    POJ 3253 Fence Repair(修篱笆)
    POJ 3069 Saruman's Army(萨鲁曼军)
    POJ 3617 Best Cow Line(最佳奶牛队伍)
    [蓝桥杯] 排它平方数
    [蓝桥杯] 小朋友排队
    UVA315 Network 连通图割点
    POJ 1236 Network of Schools 连通图缩点
    poj1061 青蛙的约会
    拓展欧几里
  • 原文地址:https://www.cnblogs.com/yanjiayi098-001/p/11340728.html
Copyright © 2011-2022 走看看