for语句,range() 函数

for 语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.

2 ... a = ['cat', 'window', 'defenestrate']
3 >>> for x in a:
4 ... print(x, len(x))
5 ...
6 cat 3
7 window 6
8 defenestrate 12

如果你需要在循环体内修改你正迭代的序列 (例如说,复制序列中选定的项), 你最好是制作一个副本. 在序列上的迭代并不会自动隐式地创建
一个副本. 切片标记让这种操作十分方便:

1 >>> for x in a[:]: # 制 造 整 个 列 表 的 切 片 复 本
2 ... if len(x) > 6: a.insert(0, x)
3 ...
4 >>> a
5 ['defenestrate', 'cat', 'window', 'defenestrate']

如果需要一个数值序列, 使用内建函式 range() 会很方便. 它产生等
差级数序列:

1 >>> for i in range(5):
2 ... print(i)
3 ...
4 0
5 1
6 2
7 3
8 4

给出的终止点不会在生成的序列里; range(10) 生成 10 个值, 组成一个

长度为 10 的合法序列. 可以让 range 的起始初值定为另一个数, 也可以指

定一个不同的增量 (甚至可以为负; 有时这被称为’ 步长’):

1 range(5, 10)
2 5 through 9
3
4 range(0, 10, 3)
5 0, 3, 6, 9
6
7 range(-10, -100, -30)
8 -10, -40, -70


要对一个序列的索引进行迭代的话, 组合使用 range() 和 len():

1 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
2 >>> for i in range(len(a)):
3 ... print(i, a[i])
4 ...
5 0 Mary
6 1 had
7 2 a
8 3 little
9 4 lamb

多数情况中, 用 enumerate() 函式更加方便, 参见遍历技巧.

直接打印 range 的时候会发生奇怪的事情:

1 >>> print(range(10))
2 range(0, 10)

在许多情况下, range() 的返回值和列表的行为类似, 但是事实上并非

如此. range() 是这样一个对象: 当你对它的返回值进行迭代时, 它确实返
回了一些连续的项, 但是它并没有创建这样一个列表, 并因此节省了空间.

原文地址:https://www.cnblogs.com/wmh33/p/10056153.html