先看一个实例(以下代码在python环境下):
array=[3,4,5]
for i in range(len(array)):
array.append(i)
print(i)
print(array)
在假想for循环的循环次数会改变时,那上述代码将随着array的不断加长而变成一个死循环,但实际运行的结果是
0
1
2
[3, 4, 5, 0, 1, 2]
结果说明,循环变量 i 的取值不随array的加长而改变,循环的次数的固定的,即使是在循环体内改变循环变量 i 的值,也不会影响循环的次数,看下例:
array=[3,4,5]
for i in range(len(array)):
array.append(i)
print(i)
i=i+3
print(array)
这个例子的输出结果和第一个例子是一样的,说明循环的次数的固定的
array=[3,4,5]
for i in range(len(array)):
array.append(i)
i=i+3
print(i)
print(array)
这个例子的输出结果为:
3
4
5
[3, 4, 5, 0, 1, 2]
这个例子中,array并未改变,但循环变量 i 的取值在循环体里面是被改变了,却并不影响循环的次数。
因为,循环变量的取值在一开始就生成了,range(len(array))生成了一个生成器[0,1,2],循环变量就依次取值,循环体中可以临时改变循环变量的值,但不会改变生成器。
要想改变循环的次数,可以用while语句代替。
i=0
while len(array)<10:
array.append(i)
print(i)
i=i+1
print(array)
该例子的结果为
0
1
2
3
4
5
6
[3, 4, 5, 0, 1, 2, 3, 4, 5, 6]
因此,for循环适合循环次数固定的情况,而while循环则都可以适用。