选代处理一个对象序列
for 循环迭代变量 in 序列:
for循环将序列中各个数据依次赋给一个循环选代变量,并执行相应操作。
for循环无需指定循环次数,它能自动迭代序列中的所有对象,且保证无遗漏
注意,Python中不仅可以迭代列表,还可以迭代各种序列(序列是一个有序的对象集合)
Python解释器可以迭代处理Python中的所有序列:列表、range()函数、字符串等
例1 对简单列表的迭代
>>> for i in [1,2,3]:
print(i)
1
2
3
例2 指定循环次数
for可以用于迭代处理某个序列,也可以用于固定次数的循环
>>> for num in range(3):
print("Hello world!")
Hello world!
Hello world!
Hello world!
使用range(3)
,我们获得了一个数字列表[0,1,2]
,本质原理与例1相同
例3 迭代字符串
>>> for ch in "Hi!":
print(ch)
H
i
!
别忘了,Python中的字符串也是序列,同样能被迭代
例4 使用enumerate迭代
for i,item in enumerate(可迭代对象)
其中i
给出索引,item
给出元素
range函数
range(stop)
或range(start, stop[, ±step])
注意:结束值stop
指示上限,但并不包含其本身
#使用range函数生成列表
>>> list(range(0,10,2))#注意,最后一项不包含10
[0, 2, 4, 6, 8]
>>> list(range(10,0,-2))#步长为负值
[10, 8, 6, 4, 2]
for迭代器与while的区别
for迭代中,要迭代的范围在第一句for中就已经固定好
在迭代中无法修改迭代变量的下一个值或迭代范围,即无法改变接下来的迭代情况
>>> n=5
>>> for i in range(n):
print('i:',i,end='; ')
n-=1
i+=1
print('modified i:',i,end='; ')
print('n:',n)
i: 0; modified i: 1; n: 4
i: 1; modified i: 2; n: 3
i: 2; modified i: 3; n: 2
i: 3; modified i: 4; n: 1
i: 4; modified i: 5; n: 0
若想要像传统的for循环那样,在迭代过程中修改迭代范围,要用while
>>> n=5
>>> i=0
>>> while i<n:
print('i:',i,end='; ')
n-=1
i+=1
print('modified i:',i,end='; ')
print('n:',n)
i: 0; modified i: 1; n: 4
i: 1; modified i: 2; n: 3
i: 2; modified i: 3; n: 2