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

    迭代器

      迭代器即迭代的工具

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

        迭代器:迭代器指的是迭代取值的工具,他可以迭代取值。

      如果想要知道python中迭代器是什么?必须先知道什么是可迭代对象?

      

      可迭代对象:所有的序列类型:str , list ,tuple , dict , set ,f

      凡是内部有str.__ iter __ ()方法的都是可迭代对象。

      

      获取迭代器:

        通过可迭代对象.__ iter __(),得到的返回值都是“迭代器对象”。

        迭代器是迭代取值的工具,作用是迭代取值

      如何迭代取值:

        迭代器对象.__ next __() #"每一次执行",都会从迭代器对象中取出一个值

    # 测试迭代文件
    f = open('user.txt', 'r', encoding='utf-8')
    iter_f = f.__iter__()
    
    while True:
        try:
            print(iter_f.__next__())
    
        except StopIteration:
    
            break
    str1 = 'hello tank'
    # 先获取迭代器对象
    iter_str1 = str1.__iter__()
    
    while True:
        try:
            print(iter_str1.__next__())
    
        except StopIteration:
            break

    总结:可迭代对象 VS 迭代器对象:

      获取可迭代对象:定义序列类型(str , list , set ,tuple , dict , f)

      特点:

        内置有__ iter __()

      获取迭代器对象:通过可迭代对象调用.__ iter __()得到返回值

       特点:

        内置有__ next __()

      迭代器对象的优缺点:

        优点:

          1、不依赖于索引迭代取值。

          2、节省内存空间。

        缺点:

          1、取指定某个值麻烦

          2、每次取值都要从第一个值开始,无法通过索引取值

    for循环原理

       语法: for i in 可迭代对象:
    
    ​    in:可迭代对象 ---->内部会自动调用.__ iter __()---->迭代器对象
    
      for line in list1:
    
      #迭代器对象. __ next  __()

    # 确定: 迭代器对象也是一个可迭代对象
    # 判断可迭代对象是否是迭代器对象

    # 唯独文件比较特殊: 因为文件从读取出来的时候就是一个迭代器对象
    # f ---> 可迭代对象, 还是迭代器对象
    # f = open('user.txt', 'r', encoding='utf-8')
    # # 确定: 文件既是可迭代对象,也是迭代器对象。

     

     

  • 相关阅读:
    第二阶段冲刺报告(三)
    第二阶段冲刺报告(二)
    第二阶段冲刺报告(一)
    课程改进意见
    用户体验
    返回一个二维整数数组中最大联通子数组的和
    《你的灯亮着吗》阅读笔记三 ——谁的问题
    《你的灯亮着吗》阅读笔记二 ——什么是真正的问题
    《你的灯亮着吗》阅读笔记一 —— 问题是什么?
    我爱淘冲刺阶段站立会议2每天任务6
  • 原文地址:https://www.cnblogs.com/lvguchujiu/p/11852118.html
Copyright © 2011-2022 走看看