本文主要介绍Ptyhon 3中while循环、for循环的基本语法,以及利用for循环遍历列表、字典和列表推导的相关内容。
while循环
基本语法
while循环语法比较简单,与其他语言类似。
1 | #输出1-10 |
for循环
遍历列表
for循环更多地用于列表,集合,字典等遍历。
例如遍历一个列表:
1 | #遍历列表 |
如果要生成特定序列,可使用内建函数range(),注意python 3 中xrange()函数跟range()已合并。之前版本中xrange()函数作用与range()函数相同,区别是range()函数一次创建整个序列,xrange()函数一次只创建一个数。需要迭代一个巨大的序列时,xrange()会更高效一些。
1 | #如果只是输出某一范围的数字,可以使用范围函数range(),该函数生成一个包含开始,不含结束区间的序列。 |
字典遍历
可使用如下语法遍历字典的键和值。
1 | #循环遍历字典 |
如果只遍历字典的键,如下:
1 | #循环遍历字典 |
如果只遍历字典的值,如下:
1 | #循环遍历字典 |
字典并行遍历
如果要同时遍历两个列表,可以按如下方式:
1 | #并行迭代,如果要同时遍历两个列表 |
内建zip()函数可用于并行迭代,把两个序列并在一起,返回一个元祖列表,写法更简洁。
1 | # 内建zip()函数可用于并行迭代,把两个序列并在一起,返回一个元祖列表 |
for循环与else语句
for循环中可以使用判断语句,如果符合某一特定条件就让for循环终止,如下代码,如果n等于3,则循环终止了。
1 | for n in range(7): |
如果在for后加一个else子句,如果for循环被break打断,else子句不会被执行,如下代码输出结果3。
1 | for n in range(7): |
如果for循环中没有执行break语句,则else子句会被执行一次,如下代码输出结果:No
1 | for n in range(7): |
列表推导
刚开始看列表推导的语法可能不大容易理解,它的功能就是在一个列表基础上生成另一个列表,例如生成0-9的平方数列表:
1 | [x*x for x in range(10)] |
还可以在列表推导中加入判断语句,例如,如果要过滤出0-9中能被3整除的数的平方,可以怎么写:
1 | # 输出能被3整除的平方数 |
列表推导中可以写多个for语句,例如:
1 | [(x,y) for x in range(3) for y in range(3)] |
可以看到,效果类似于表的全连接,输出连个列表的所有组合,同样可以加入if语句,效果类似于表连接中的where条件过滤。
1 | [(x,y) for x in range(3) for y in range(3) if x == y] |
参考
Magnus Lie Hetland 著《Beginning Python-From Novice to Professional Secnod Edition》