名词
- 循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while 语句。
- 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for 语句。
- 递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
- 遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
名词引用: python 在线手册 by: PythonTab
现在只学迭代的基本
iter
生成迭代器(可迭代的变量)
语法:iter(object)
- object 是一个可迭代对象,可以是列表、字符串、字典等。
1 | from collections.abc import Iterable # 导入可迭代的类型Iterable,来判断是否可以迭代。 |
next
语法:next(iterator, default)
- iterator:从中检索下一个项目的迭代器。
- default(可选):如果迭代器耗尽(没有下一个项目),则返回此值。
1 | a = iter([1, 2, 3]) # 使用iter生成一个迭代器。 |
1 | 1 |
for
已经把a
迭代完了,轮到next
的时候就已经没有了。
如果不写next
的返回值就会报以下错误
1 | Traceback (most recent call last): |
来看下一个例子
1 | a = iter([1, 2, 3]) |
next
输出了 1,for
输出了 2, 3。
1 | 1 |
为什么 for 开始会输出 2 不是 1 呢?
第一次使用 next(a)时,迭代器 a 返回了列表的第一个元素,也就是 1,然后使用 for 循环遍历 a 时,迭代器从它停止的地方继续,也就是从第二个元素开始,所以它打印出了 2, 3。
因为迭代器已经"记住"
了它在哪里停止,并从那里继续。