迭代对象、迭代器、生成器
2019-03-29 本文已影响0人
LuDon
容器(container)
容器是一种把多个元素组织在一起的数据机构,容器中的元素可以逐个地迭代获取。Python中常见的容器有:
- list,deque
- set,frozensets
- dict, defaultdict
- tuple, namedtuple
- str
可迭代对象(iterable)
可以返回一个迭代器的对象可称为可迭代对象。
>>> x = [1, 2, 3]
>>> y = iter(x)
>>> z = iter(x)
>>> next(y)
1
>>> next(y)
2
>> next(z)
1
迭代器(iterator)
迭代器是一个带状态的对象,在调用next()方法的时候返回容器中的下一个值。每次调用next()时做两件事:
1、为下一次调用next()方法修改状态;
2、为当前这次调用生成返回结果。
生成器(generator)
生成器是Python中最吸引人的特性,生成器其实就是一种特殊的迭代器。
def fib():
prev, curr = 0, 1
while True:
yield curr
prev, curr = curr, curr + prev
>>> f = fib()
>>> list(islice(f, 0, 10))
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]