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

      为方便日后查询和学习,关于Python迭代器的内容将从可迭代对象、迭代器和从迭代器到序列三个方面总结

    1. 可迭代对象

      a. Python中经常使用for...in...来对某个对象进行遍历,此时被遍历的对象就是迭代对象

      b. 容器(list/tuple/dict/set)、文件、容器都是可迭代对象

      c. 可迭代对象内部都定义了可以返回一个迭代器的__iter__方法或可以支持下标索引的__getitem__方法

    2. 迭代器(iterator)

      任何实现了__iter__和__next__方法的独享都是迭代器,__iter__返回迭代器的自身,__next__返回容器中的下一个值

      当没有更多的元素,则抛出StopIteration异常

      例:

    class fibs:
        numb = 100
        def __init__(self):
            print ("step 1")
            pass
        def __iter__(self):
            print ("step 2")
            return self
        def __next__(self):
            print ("step 3")
            fibs.numb = fibs.numb + 100
            return fibs.numb 
            
    fib = fibs()
    for i in fib:
        if i > 200:
            print (i)
            break

      输出:

      >>>> step 1
      >>>> step 2
      >>>> step 3
      >>>> step 3
      >>>> 300

    3. 从迭代器到序列

      除了在迭代器和可爹带对象上进行迭代外,还能把它们转换为序列

    class fibs:
        numb = 100
        def __init__(self):
            #print ("step 1")
            pass
        def __iter__(self):
            #print ("step 2")
            return self
        def __next__(self):
            #print ("step 3")
            fibs.numb = fibs.numb + 100
            if fibs.numb > 700:
                raise StopIteration
            return fibs.numb 
            
    输出:
        >>>> fib = fibs()
        >>>> print (list(fib))
        >>>> [200,300,400,500,600,700]

      

      

  • 相关阅读:
    collections.ChainMap类合并字典或映射
    collections.namedtuple()命名序列元素
    过滤、修改和替换列表数据
    快速排序
    itertools.groupby()分组字典列表
    operator.attrgetter() 进行对象排序
    operator.itemgetter() 字典列表排序
    collections.Counter类统计列表元素出现次数
    递归
    正则表达式的一些题
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/8295055.html
Copyright © 2011-2022 走看看