python 迭代器

什么是迭代

在Python中,如果给定一个listtuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:

for (i=0; i<list.length; i++) {
    n = list[i];
}

可以看出,Python的for循环抽象程度要高于Java的for循环。

因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str和unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict

而迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。

迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的。

可以直接作用于for循环的对象统称为可迭代对象(Iterable)。

>>> L = [1,2,3]
>>> [x**2 for x in L]
[1, 4, 9]
L 就是可迭代对象
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)

>>> I=iter(L)
>>> next(I)
1
>>> next(I)
2
>>> next(I)
3

所有的Iterable均可以通过内置函数iter()来转变为Iterator

关注公众号 海量干货等你
原文地址:https://www.cnblogs.com/sowhat1412/p/12734389.html