对于包含数字的列表,可能需要对每个元素执行相同的统计运算;
- 在网站中,可能需要显示文章列表中的每个标题
- 需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环
1. 遍历整个列表
假设有一个魔术师列表:
magicians = [‘alice‘,‘david‘,‘carolina‘]
使用for循环来打印魔术师名单中的名字:
for magician in magicians:
? print(magician)
解释:
第一行代码让Python从列表magicians中取出一个名字,并将其存储在变量magician中。最后,我们让Python打印前面存储在变量magician中的名字。继续循环,直到列表中没有其他的值了。
2. 在循环中执行更多的操作
for magician in magicians:
print(magician.title() + ',that was a great trick!')
print('Thank you,everone. That was a great magic show!')
3. 创建数值列表
在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。
在数据可视化中,处理几乎都是由数字(如温度,距离,人口数量,经度和纬度等)组成的集合。
列表非常适合用于存储数字集合,而python提供了很多工具,可帮助你高效地处理数字列表
-
range()函数(生成一系列数字)
for value in range(1,5):
print(value)
'''
打印结果:
1
2
3
4
'''
上述代码好像应该打印数字1~5,但实际上它不会打印数字5,函数range()让python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)
*要打印数字1~5,需要使用range(1,6):
for value in range(1,6):
print(value)
"""
运行结果:
1
2
3
4
5
"""
-
使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表,如果range()作为list()的参数,输出将为一个数字列表。
numbers = list(range(1,6))
print(numbers)
"""
运行结果:
[1,2,3,4,5]
"""
使用range()时,还可以指定步长
even_numbers = list(range(2,11,2))
print(even_numbers)
"""
运行结果:
[2,6,8,10]
"""
例如,创建一个空列表,其中包含1~10的平方,在python中两个星号(**)代表乘方运算
squares = []
for value in range(1,11):
square = value**2
squares.append(square)
print(squares)
"""
运行结果:
[1,9,16,25,36,49,64,81,100]
"""
4.max(),min(),sum()
digits = [1,5,7,0]
# 求digits的最大值
max(digits)
# 求digits的最小值
min(digits)
# 求和
sum(digits)
5. 列表推导式
前面介绍的生成列表squares的方式包含三四行代码,而列表推导式让你只需写一行代码就能生成这样的列表。
列表推导式将for循环和创建新元素的代码合并成一行,并自动附加新元素
# 注意:for循环后面没有冒号
squares = [value**2 for value in range(1,11)]
print(squares)
注意:
要使用这种语法,首先指定一个描述性的列表名,如squares;
然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式value**2,它计算平方值。
接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
- 例如:使用列表推导式通过函数range()指定第三个参数创建一个列表,其中包含1~20的奇数;在使用for循环将这个列表中的数字打印出来
odd_numbers = [value for value in range(1,21,2)]
print(odd_numbers)
'''
运行结果:
[1,13,15,17,19]
'''
6. 使用列表的一部分(切片)
要使用切片,可指定要使用的第一个元素和最后一个元素的索引
与函数range()一样,Python在到达你指定的第二个索引出停止,不会打印最后一个元素的索引
-
切片
有一个运动员列表:
players = ['a','d','e','f']
# 打印第1~第2个元素
print(players[0:2])
# 打印第2~第4个元素
print(players[1:4])
# 没有指定起始索引,默认从头开始
print(players[:4])
# 没有指定末尾索引,默认到结束
print(players[3:])
# 打印最后3个元素
print(players[-3:])
-
遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片
下面代码没有遍历整个列表,只遍历前三个元素
players = ['a','f']
for player in players[:3]:
print(player)
'''
运行结果:
a
b
c
'''
在很多情况下,切片都很有用。
编写游戏时,你可以在玩家退出游戏时将其最终得分加入到一个列表中。然后,为获取该玩家的三个最高分,你可以将列表按降序排列,再创建一个只包含前三个得分的切片。
处理数据时,可使用切片来进行批量处理
编写web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息
my_foods = ['a','c']
friend_foods = my_foods[:]
'''
在不使用切片的情况下,这行不通
这里将my_foods赋给friend_foods,而不是将my_foods的副本存储到friend_foods
这里my_foods和friend_foods指向同一个列表
'''
friend_foods = my_foods