• 迭代器


    迭代器

    • 迭代器

      • 用来取值的工具,可以迭代取值
      • 迭代:迭代是重复反馈过程的活动,每次对过程的重复成为一次“迭代”
      • 每一次迭代都是基于上一次的结果而来的
    • 可迭代对象:

      所有的序列类型:str、list、tuple、dict、set、f

      凡是内部有.__iter__()方法的都是可迭代对象

    • 获取迭代器:

      通过可迭代对象.__iter__()方法得到的返回值就是迭代器对象

    • 如何迭代取值:

      迭代器对象.__next__()

      每一次执行,都会从迭代器对象中取一个值

    取值相当于for循环,而for循环的原理相当于

    list = [1, 2, 3, 4]
    for line in list1:
        迭代器对象.__next__()
        print(line)
    
    str1 = 'hello world!'
    for i in str1:
        print(i.__iter__().__next__())
    

    list1是可迭代对象——>内部会自动调用.__iter__()——>迭代器对象

    当值被取完就会就会报错,所以这里用到

    try: 捕获异常

    l1 = [1, 2, 3, 4, 5]
    inter_l1 = l1.__iter__()
    while True:
        print(inter_l1.__next__())
    StopIteration	# 报错
    

    用法:

    try:
        print(iter_list1.__next__())
    except StopIteration:
        break
    
    l1 = [1, 2, 3, 4, 5]
    inter_l1 = l1.__iter__()
    while True:
        try:
            print(inter_l1.__next__())
        except StopIteration:
            break
            
    1
    2
    3
    4
    5
    

    迭代器对象也是一个可迭代对象

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

    文件比较特殊:文件即是可迭代对象,也是迭代器对象

    • 迭代器对象的优点

      • 不依赖与索引迭代取值
      • 节省内存空间
    • 迭代器对象的缺点

      • 取值麻烦
      • 每次取值都要从第一个值开始,无法通过索引取值
  • 相关阅读:
    【20221012】连岳摘抄
    【20221006】主次之分
    【20221011】三孩家庭
    【20221007】连岳摘抄
    【20221009】连岳摘抄
    【20221010】连岳摘抄
    【20221005】回趟老家
    NOIP2022 不知道该怎么形容记
    Solution 「NOI Simu.」逆天题
    Solution 「NOI Simu.」记忆
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11889264.html
Copyright © 2020-2023  润新知