L16 Iterators
-
容器能提供一个迭代器,迭代器提供访问元素的顺序
iter(iterable)创建迭代器,指向第一个元素next(iter)推进迭代器,输出指向元素并后移,如果到达末尾继续后移会抛出StopIteration错误list(iter)列出迭代器中后续的所有元素并将迭代器置于末尾,返回迭代器后所有元素的list
-
Dictionary Iteration
- python字典3.5之前是无序的,后序有序
iter(d.keys()) == iter(d)迭代keyiter(d.values())迭代valueiter(d.items())迭代key-value- 如果在使用字典迭代器时增删字典,则迭代器失效,仅改不影响迭代器
-
For 语句
for i in iter:可以遍历迭代器的所有元素,但是会将迭代器推至末尾以至于无法再使用
-
Built-in Function for iteration
- 惰性计算,只有迭代到时才调用函数
map(func,iterable)遍历iterable中的func(x) --- 返回iterfilter(func,iterable)遍历可迭代对象中的x,满足func(x) 为真(一直向后应用直到找到第一个达成的) --- 返回iterzip(first_iter,second_iter)遍历共索引的(x,y)对 --- 返回iterlist(zip([1,2],[3,4])) == [(1,3),(2,4)]list(zip|[1, 2], [3, 4, 5])) == [(1,3),(2,4)]list(zip([1, 2], [3, 4, 5], [6, 7])) == [(1, 3, 6), (2, 4, 7)]
reversed(sequence)遍历序列中x的逆序 --- 返回iterlist(iterable)创建一个包含迭代器中所有x的listtuple(iterable)创建一个包含iterable中所有x的tuplesorted(iterable)创建一个包含 x 的可迭代对象的排序列表