一.迭代器
迭代器是访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器
特点:
- 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
- 不能随机访问集合中的某个值 ,只能从头到尾依次访问
- 访问到一半时不能往回退
- 便于循环比较大的数据集合,节省内存
>>> li = [1,2,3] >>> it = iter(li) >>> print(next(it)) 1 >>> print(next(it)) 2 >>> print(next(it)) 3
迭代器可以使用for循环进行遍历
>>> li = [1,2,3] >>> it = iter(li) >>> for i in it: ... print(i) ... 1 2 3
二.生成器
一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator)
如果函数中包含yield语法,那这个函数就会变成生成器
生成器运作:
当达到一个真正的返回或者函数结束没有更多值返回(当调用next()),一个StopIteration异常就会抛出
def func(): yield 1 yield 2 yield 3 yield 4
>>> temp = func() >>> temp.__next__() 1 >>> temp.__next__() 2 >>> temp.__next__() 3 >>> temp.__next__() 4 >>> temp.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
def frang(n): start = 0 while start < n: yield start start += 1 valu = frang(5) n1 = valu.__next__() n2 = valu.__next__() print(n1,n2)