4.2 for 语句
Python 中的 for 语句和你在 C 或者 Pascal 中习惯的用法可能不太一样。Python 语言不会总是遍历或迭代一个等差数列 (如Pascal),也不会让用户可以同时定义迭代步骤和终止条件 (如 C)。Python 的 for 语句遍历任何一个序列 (列表或字符串) 的所有元素,这样它们就可以在序列中出现了。举个栗子 (没有一语双关):
>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print(w, len(w))
...
cat 3
window 6
defenestrate 12
如果你需要在内部修改正在遍历的序列 (比如要复制所选的元素),建议你首先复制一份。遍历一个序列不会隐式的复制一份。slice 符号在这里就很方便:
>>> for w in words[:]: # Loop over a slice copy of the entire list.
... if len(w) > 6:
... words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']
如果在这个例子中使用了 for w in words
,就会一遍又一遍的插入 defenestrate
, 从而尝试着创建一个无穷的列表。