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

    迭代器

    • 迭代器

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

      所有的序列类型: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
    

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

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

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

    • 迭代器对象的优点

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

      • 取值麻烦
      • 每次取值都要从第一个值开始,无法通过索引取值
  • 相关阅读:
    给定圆心和半径在圆内随机画点
    mqtt使用二(集成到java代码中)
    mqtt使用一
    vue的细节
    mongodb学习一(使用mongoResposity)
    jadx-gui for Mac
    对xx面APP进行分析
    使用jeb对某圈进行协议分析
    proxifier 安卓模拟器设置全局代理fq
    安卓开启真机调试ro.debuggable 1修改ro属性
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11889264.html
Copyright © 2011-2022 走看看