python如何构建迭代器(iterator),迭代器又是什么呢,怎么用呢

列表,字典,元祖:是可迭代对象(iterater),并不是迭代器,那么什么是迭代器呢,上代码:

定义一个迭代器:
class BookCollection:
    def __init__(self):
	self.data = ['《往事》', '《只能》', '《回味》']
	self.cur = 0

    def __iter__(self):
	return self

    def __next__(self):
	if self.cur >= len(self.data):
	    raise StopIteration()
	r = self.data[self.cur]
	self.cur += 1
        return r

对于迭代器我们除了用for in 循环来打印之外,还可以调用next()方法:
方法一:for in 循环
books = BookCollection()
for book in books
    print(book)

方法二:调用3次next()方法  
运行结果:《往事》
	 《只能》
	 《回味》

注意:迭代器实例化一次,只能使用一次,如果还想使用:

1、重新实例化一次
books1 = BookCollection()
books2 = BookCollection()

for book in books1
    print(book)

for book in books2
    print(book)
2、利用copy
import copy
books1 = BookCollection()
在使用之前先copy一份
books_copy = copy.copy(books)

for book in books1
    print(book)

for book in books_copy
    print(book)

猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/81020105