目录

Python迭代器学习笔记

  • 更多分享:http://www.catbro.cn

  • 在写python代码时,我们经常会用for x in xx: 语法来进行遍历输出,这么爽的特性背后是如何实现的呢?

  • 自定义迭代器类型其实很简单,我们只需要重写_iter__next_即可。

  • _iter_:该方法是迭代器规则的基础,该方法返回一个迭代器对象。

  • _next_:迭代器就是拥有next方法的一个对象,通过不断地去调用next方法判断是否还有值来进行遍历。如果next调用后无值可操作,就会引发一个StopIteration异常

自定义迭代器类

class Fibs:
	def __init__(self):
		self.a =0;
		self.b =1;
	def __next__(self):
		self.a ,self.b = self.b ,self.a+self.b;
		if self.a>1000:
			raise StopIteration;
		else:
			return self.a;
	def __iter__(self):
		return self;

fibs = Fibs();
for f in fibs:
	print(f)
  • 输出:

      1
      1
      2
      3
      5
      8
      13
      21
      34
      55
      89
      144
      233
      377
      610
      987
    

为什么使用迭代器

  • 我们为什么要使用迭代器而不使用列表呢?
  • 因为列表的杀伤力太大,如果遍历的值很大,列表就会占用非常大的内存。
  • 使用迭代器可以获取一个值时计算一个值。
  • 使用迭代器更通用、简单、优雅