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生成一个新的迭代器,可以重复取值.

  • 相关阅读:
    [持续更新] ERP学习资源
    How to: Use a Windows Communication Foundation Client
    Overview of SOAP Client in Windows XP
    WSDL Overview
    How to: Configure a Basic Windows Communication Foundation Client
    Hosting Windows Communication Foundation Services
    Specifying an Endpoint Address
    Endpoint Creation Overview
    Implementing Service Contracts
    A Quick Introduction to WSDL
  • 原文地址:https://www.cnblogs.com/ppf3678/p/9983932.html
Copyright © 2011-2022 走看看