迭代器

可迭代对象:从语法形式上讲,内置有__iter__方法的对象都是可迭代对象,字符串,列表,元组,字典,集合,打开的文件都是可迭代对象

1.迭代对象

s={1,2,3,4,5}
i = iter(s)   #本质就是在调用s.__iter__(),返回s的迭代器对象i
next(i)   1
next(i)   2
next(i)   3
......

2.for循环原理

有了迭代器后,可以不依赖索引迭代值了,使用while循环的实现方式如下:

goods = ['mac','lenovo','acer','dell']
i=iter(goods)   每次都需要重新获取一个迭代对象
while True:
	try:
		print(next(i))
	except StopIteration:   #捕捉异常终止循环      
		break

for循环又称为迭代循环,in后可以跟任意可迭代对象,上述while循环可简写为:

goods = ['mac','lenovo','acer','dell']
for item in goods:
	print(item)

3.优缺点

3.1优点

为序列的非序列类型提供了一种统一的迭代取值方式

3.2缺点

除非取尽,否则无法获取迭代器的长度

小结

  • 迭代器主要是为一些没有下标索引的对象提供的方法(迭代对象),给迭代对象增加了.__iter__方法,变成了迭代器。
  • while循环称为条件循环,for循环称为迭代器循环。
  • 字符串,列表,元组,集合。。。他们都是可迭代对象,但是不是迭代器对象(他们没有.__next__方法),但是打开的文件对象是迭代器,也是可迭代对象
原文地址:https://www.cnblogs.com/xiaoxuanworking/p/14354060.html