循环#
1. 什么是循环及循环的作用#
循环是按特定顺序反复执行的一系列操作。遵循编码的 DRY (Don’t Repeat Yourself) 原则,循环可以通过用迭代替换重复的代码行来帮助我们消除代码中的重复,这意味着我们可以迭代地执行相同的代码行或块,直到它达到指定的终点。
例如,下面的行可以被一个循环替换,该循环遍历一个变量名列表并执行print()
函数,直到它到达列表的末尾:
#Create 5 objects
list_of_values = [1, 2, 3, 4, 5]
#Print each object separately
print(list_of_values)
[1, 2, 3, 4, 5]
#Cycle through each object and print
for avalue in list_of_values:
print("the current value is:", avalue)
the current value is: 1
the current value is: 2
the current value is: 3
the current value is: 4
the current value is: 5
在Python中,循环有两种主要结构:while
和for
. 下面我们将了解每一个以及它们如何帮助我们编写 DRY代码。
2. 在 Python 中创建 For 循环#
for
循环将为预定义列表中的每个项目迭代执行代码。该列表可以由数值、文件名、文本字符串中的单个字符和数据结构等对象组成。与while(下面讨论的)循环类似,for
循环后跟冒号:
用来缩进。
for
循环以单词开头,并且在循环中明确引用了预定义列表。要迭代的列表在for
循环代码之前定义:
item_list = [item_1, item_2, item_3]
for i in item_list:
execute some code here
循环有一个占位符(例如i
),表示列表中的项目。i
的初始值等于列表中的第一项;当循环遍历列表时,i
值会更改以保存列表中下一项的值。
在下面的第一个示例中,创建了一个包含 4 个非顺序值的列表:
#Create list of integers
num_list = [12, 5, 136, 47]
#For each item in list, add 10 and print new value
for i in num_list:
i += 10
print(i)
22
15
146
57
占位符随意起的,数字除外。可以被称为x
,甚至可以是完全不相关的东西,如banana
3. 在 Python 中创建 While 循环#
while
循环用于迭代地执行代码,直到不再满足预定义的条件(即产生False的值)。
注: 循环以while开头,后跟以冒号结尾的条件。while语句下方的代码也是缩进的。这个缩进很重要,因为它表明代码将作为包含在其中的循环的一部分执行,而不是在循环完成后执行。
#Set x equal to 0
x = 0
#Add 1 to x until x is no longer less than 10
while x < 10:
x += 1
print(x)
1
2
3
4
5
6
7
8
9
10
将上述例子进行小改动,对比一下两者的区别吧
#Reset x equal to 0
x = 0
#Add 1 to x until x is no longer less than 10
while x < 10:
print(x)
x += 1
print("Final value:", x)
0
1
2
3
4
5
6
7
8
9
Final value: 10
除了使用比较运算符来比较值之外,我们还可以指定一个值范围来限制while
循环的持续时间。范围包括起始值,但不包括结束值。
#Set x equal to 1
x = 1
#Add 1 to x, while x is between 1 and 5
while x in range(1, 5):
x += 1
print(x)
2
3
4
5
4 列表生成式#
L = []
for x in range(1, 11):
L.append(x * x)
L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
[x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。
写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。