zoukankan      html  css  js  c++  java
  • python三大神器之迭代器

    可迭代协议:

               内部含有__iter__方法的值/变量都是可迭代的.可迭代类型和python语言之间的协议.

    可迭代对象:

               iterable,内部包含__iter__()函数.

    迭代器:

              iterator,内部同时包含__iter__()和__next__().

    迭代器的特点:

             1节省内存,  2.惰性机制,  3一次性取值,只能按顺序取

    可迭代变量.__iter__(),返回一个迭代器.

     1 l = [1,2,3,4]
     2 res = l.__iter__()
     3 print(res.__next__())
     4 print(res.__next__())
     5 print(res.__next__())
     6 print(res.__next__())
     7 print(res.__next__())
     8 
     9 res.__setstate__(2)   # 控制迭代器从哪儿开始迭代
    10 print(res.__length_hint__())  # 迭代器中有多少个元素
    11 
    12 res1 = l.__iter__()
    13 res2 = l.__iter__()
    14 
    15 # res1和res2都是迭代器
    16 # 是两个完全不同的迭代器
    17 for i in res1:
    18     print(i)
    19 print('------')
    20 for i in res1:
    21     print(i)
    22 print('^^^^^^')
    23 for i in res2:
    24     print(i)
    25 print('!!!!!!!')
    26 for i in l.__iter__():
    27     print(i)
    28 print('******')
    29 for i in l.__iter__():
    30     print(i)
    31 for i in l:
    32     print(i)
    33 print('########')
    34 for i in l:
    35     print(i)

    for 循环取值

           for循环内部的机制就是迭代器取值机制

           在for循环执行的过程中:先把可迭代的变成一个迭代器,然后再从中一个个的取值

    for循环与迭代器的关系:

          无论是可迭代的还是迭代器都可以被for循环,

          如果直接循环迭代器,循环一次就能把值取完,不能再进行取值,

          如果循环的是非迭代器,那么每一次循环都会通过iter生成一个新的迭代器,可以重复取值.

  • 相关阅读:
    xBIM 基本的模型操作
    xBIM 应用与学习 (二)
    xBIM 应用与学习 (一)
    ABP WebApi 加载错误
    ABP 数据迁移
    AutoDesk Forge 获取令牌认证
    IIS 加载 JSON 错误 404 解决办法
    ASP.NET MVC 5 ABP DataTables (二)
    ASP.NET MVC 5 ABP DataTables (一)
    Windows10卡顿,磁盘 内存占用100%或比较多
  • 原文地址:https://www.cnblogs.com/ppf3678/p/9983932.html
Copyright © 2011-2022 走看看