实际场景中,经常需要存储一组数字。例如在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、经度和纬度等)组成的集合。
列表非常适合用于存储数字集合,并且 Python 提供了 range() 函数,可帮助我们高效地处理数字列表,即便列表需要包含数百万个元素,也可以快速实现。
Python range() 函数能够轻松地生成一系列的数字。例如,可以像如下这样使用 range() 来打印一系列数字:
for value in range(1,5): print(value)
输出结果为:
1 2 3 4
注意,在这个示例程序中,range() 只是打印数字 1~4,因为range() 函数的用法是:让 Python 从指定的第一个值开始,一直数到指定的第二个值停止,但不包含第二个值(这里为 5)。
因此,如果想要上面程序打印数字 1~5,需要使用 range(1,6)。
另外需要指明的是,range() 函数的返回值并不直接是列表类型(list),例如:
>>> type([1,2,3,4,5]) <class 'list'> >>> type(range(1,6)) <class 'range'>
可以看到,range() 函数的返回值类型为 range,而不是 list。而如果想要得到 range() 函数创建的数字列表,还需要借助 list() 函数,比如:
>>> list(range(1,6)) [1, 2, 3, 4, 5]
可以看到,如果将 range() 作为 list() 的参数,其输出就是一个数字列表。
不仅如此,在使用 range() 函数时,还可以指定步长。例如,下面的代码打印 1~10 内的偶数:
even_numbers = list(range(2,11,2)) print(even_numbers)
在这个示例中,函数 range() 从 2 开始数,然后不断地加 2,直到达到或超过终值,因此输出如下:
[2, 4, 6, 8, 10]
注意,即便 range() 第二个参数恰好符合条件,最终创建的数字列表中也不会包含它。
实际使用时,range() 函数常常和 Python 循环结构、推导式(后续会讲,这里先不涉及)一起使用,几乎能够创建任何需要的数字列表。
例如,创建这样一个列表,其中包含前 10 个整数(即1~10)的平方,实现代码如下:
squares = [] for value in range(1,11): square = value**2 squares.append(square) print(squares)
运行结果为:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]