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]

 

  

 

  

posted @ 2018-01-16 09:43  Fate0729  阅读(178)  评论(0编辑  收藏  举报