你经常需要遍历列表的所有元素,对每个元素执行相同的操作。例如,在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章列表中的每个标题。需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环。
下面使用for循环来打印魔术师名单中的所有名字:
magicians = ['alice','david','carolina']
for magician in magicians:print(magician)
详细过程:首先,我们像第3章那样定义了一个列表。接下来,我们定义了一个for循环;这行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们让Python打印前面存储到变量magician中的名字。这样,对于列表中的每个名字,Python都将重复执行第二行和第三行的代码行。你可以这样解读这些代码:对于列表magicians中的每位魔术师,都将其名字打印出来。
输出结果如下:
alice
david
carolina
循环这种概念很重要,因为它是让计算机自动完成重复工作的常见方式之一。例如,在前面的magicians.py中使用的简单循环中,Python将首先读取其中第一行代码:
for magician in magicians:
这行代码让Python获取列表magicians中的第一个值(’alice’),并将其存储到变量magician中。接下来。Python读取下一行代码:
print(magician)
它让Python打印magician的值——依然是’alice’。鉴于该列表还包含其他值,Python返回到循环的第一行:
for magician in magicians:
Python获取列表中的下一个名字——’david’,并将其存储到变量magician中,再执行下面这行代码:
print(magician)
接着就是一直循环11111,直到没有其他的值为止。
刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环的指定步骤,而不管列表包含多少个元素。如果列表包含一百万个元素,Python就重复执行指定的步骤一百万次,且通常速度非常快。
另外,编写for循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。然而,选择描述单个列表元素的有意义的名称大有帮助。例如,对于小猫列表、小狗列表和一般性列表像下面这样编写for循环的第一行代码是不错的选择:
for cat in cats:
for dog in dogs:
for item in list_of_items:
这些命名约定有助于你明白for循环中将对每个元素执行的操作。使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。
在for循环中,可对每个元素执行任何操作。下面来扩展前面的示例,对于每位魔术师,都打印一条消息,指出他的表演太精彩了。
magicians = ['alice','david','carolina']
for magician in magicians:print(magician.title()+",that was a great trick!")
Alice,that was a great trick!
David,that was a great trick!
Carolina,that was a great trick!
在for循环中,想包含多少行代码都可以。在代码行for magician in magicians后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作。下面再添加一行代码,告诉每位魔术师,我们期待他的下一次表演:
magicians = ['alice','david','carolina']
for magician in magicians:print(magician.title()+",that was a great trick!")print("I can't wait to see your next trick," + magician.title() + ".\n")
Alice,that was a great trick!
I can't wait to see your next trick,Alice.
David,that was a great trick!
I can't wait to see your next trick,David.
#4-1 披萨:想出至少三种你喜欢的披萨,将其名称存储在一个列表中,再使用for循环将每种披萨的名称都打印出来。
#修改这个for循环,使其打印包含披萨名称的句子,而不仅仅是披萨的名称。对于每种披萨,都显示一行输出,如“I really love pizza!”
pizzas = ['lekaisa','bishengke','dameile']
for pizza in pizzas:print("I like " + pizza.title()+" pizza")
#在程序末尾添加一行代码,它不在for循环中,指出你有多喜欢披萨。输出应包含针对每种披萨的消息,还有一个总结性句子,如“I really love pizza!”
print("I really love pizza")#4-1 披萨:想出至少三种你喜欢的披萨,将其名称存储在一个列表中,再使用for循环将每种披萨的名称都打印出来。
#修改这个for循环,使其打印包含披萨名称的句子,而不仅仅是披萨的名称。对于每种披萨,都显示一行输出,如“I really love pizza!”
pizzas = ['lekaisa','bishengke','dameile']
for pizza in pizzas:print("I like " + pizza.title()+" pizza")
#在程序末尾添加一行代码,它不在for循环中,指出你有多喜欢披萨。输出应包含针对每种披萨的消息,还有一个总结性句子,如“I really love pizza!”
print("I really love pizza")
Carolina,that was a great trick! I can't wait to see your next trick,Carolina.
由于两条print语句都缩进了,因此它们都将针对列表中的每位魔术师执行一次。第二条print语句中的换行符"\n"在每次选代结束后都插入一个空行,从而整洁地将针对各位魔术师的消息编组:
在for循环中,想包含多少代码都可以。实际上,你会发现使用for循环对每个元素执行众多不同的操作很有用。
上一篇:1.设计模式的前奏