迭代器(iterators)
迭代器有一个特点,就是每次迭代容器里的一个数,把容器里的数迭代完之后就会停止迭代,出现 StopIteration
异常。可以把迭代器理解为洗发水,每次挤一点,挤完了就剩下个空瓶,可以丢掉了。使用容器内置函数__iter__()可以直接生成迭代器,使用iter()函数也可以生成迭代器。
>>> nums = [1, 2, 3]
>>> iter(nums)
<...iterator object at ...>
#生成一个迭代器
>>> it = iter(nums)
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
>>> next(it)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
用在for循环里面:
>>>nums=[1,10,100]
>>>it = nums.__iter__()
>>>sum=0
>>>for i in it:
...: sum=sum+i
...:print sum
111
>>>for i in it:
...: sum=sum+i
...:print sum
0
生成器(generators)
生成器通常由推导式生成,例如:
>>> (i for i in nums)
<generator object <genexpr> at 0x...>
>>> list(i