for循环与列表的遍历
先写一个简单的列表循环遍历代码,这样说明比较直观与方便些:
names = [ 'ZhangSan', 'LiSi', 'WangWu' ]
for name in names:
print(name)
这段代码结果显示:
ZhangSan
LiSi
WangWu
这段代码就是一个简单的链表循环遍历,下面我逐一说明下:
第一行定义了 一个名为names的列表,里面有三个元素分别为 ‘ZhangSan’, ‘LiSi’, ‘WangWu’。
第二行是一个for循环用来遍历列表names里的元素,for循环的基本格式是:
for 变量 in 可迭代的集合 :
循环语句1
循环语句2
.
.
.
循环语句n
for循环的行为是在每次循环时从 可迭代的集合 中取出一个元素赋值给 变量 ,然后下面的循环语句中就可以使用这个变量,最后直到集合中的每一个元素都被遍历了一次之后 循环结束。
第三行就是将变量name(每次循环遍历时从names列表中取出一个元素赋值得来)打印出来。
这里需要注意的是一下几点:
- for循环后的冒号不要忘了,这是告诉编译器后面有语句而且是和从属于这一行的。(问:那就写个for语句,后面什么都不跟行不行? 答:不行,如果想什么都不做那也要跟一个pass语句,否则编译不通过)
- for后面的循环语句都要统一缩进(4个空格或一个tab),python对于格式的缩进要就极其严格,多了少了都不行,因为编译器需要用缩进来判断这个语句到底是属于哪一个代码块。一旦缩进不对要么编译器解析你的代码时报错,要么碰巧编译过了却和你想要的运行顺序不一样。
- 如果后面的代码不是循环体的一部分,那么只要去掉一个tab缩进就好了。在python中你可以用缩进来一眼看出代码的层次结构,这也是python令人喜欢的地方之一,代码读起来结构清晰明了。
while循环
既然写到了for循环那么也把while循环介绍下,这样能对比着看一下,我想介绍完了也就明白为什么列表的循环一般都用for而不是while。
while语句的基本结构为:
while 逻辑判断表达式:
循环语句1
循环语句2
.
.
.
循环语句n
while循环的行为是只要逻辑判断表达式的结果为真,则执行循环语句,直至逻辑判断表达式的结果为假时退出。
那么同样是上面的列表,如果用while遍历该怎么写呢?以下是代码:
names = [ 'ZhangSan', 'LiSi', 'WangWu' ]
names_len = len(names)
index = 0
while index < names_len:
print(names[index])
index += 1
看到了吧,for用3行解决的事儿,while需要6行。那么为什么要有while循环呢?那是因为某些情况下while循环比for用起来能更方便的描述现实情况。比如和用户交互,比如一个游戏程序什么时候结束。一般来说执行循环时有明确循环次数的用for循环,而循环次数是未知时则用while循环。
说到循环还有两个关键词不得不说一下,一个是continue,一个是break,这两个关键词经常能在循环中看到。
- continue: 当程序在循环中执行到continue时,程序立刻从循环的头部开始下一次循环的执行(如此一来continue语句下面的循环语句自然是执行不到了)
- b