【笔记】Python | 04 | 操作列表 | 4.3 创建数值列表


创建数值列表

有时需要存储一组数字,比如游戏中记录角色的位置,记录玩家的得分。在数据可视化中,处理的几乎都是由数字组成的集合。

使用函数range()

函数range()能轻松生成一组数字。

for value in range(1,5):
    print(value)

输出结果:

>>>
1
2
3
4

range()从指定的第一个值开始数,在达到第二个值后停止,输出不包含第二个值。如果要打印数字1~5,需要用range(1,5)

使用range()创建数字列表

要创建数字列表,使用函数list()range()的结果直接转换为列表。也就是将range()作为list()的参数。

numbers = list(range(1,6))
print(numbers)

输出结果:

>>> [1, 2, 3, 4, 5]

使用函数range()时,还可以指定步长。下面打印1~10内的偶数。

even_numbers = list(range(2,11,2))
print(even_numbers)

输出结果:

>>> [2, 4, 6, 8, 10]

在这个例子中,range(2,11,2)有三个参数,即从2开始计数,不断增加2,达到或超过终值11。

下面创建一个列表,其中包含前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]

对数字列表执行简单的统计计算

有几个专门处理数字的函数,可以快速找到最大值、最小值和总和。

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(min(digits))
print(max(digits))
print(sum(digits))

输出结果:

>>>
1
9
45

列表解析

前面生成squares的方式包含三四行代码,而列表解析可以只需编写一行代码即可。用列表解析创建1~10内数的平方。

squares = [value**2 for value in range(1,11)]
print(squares)

创建列表解析需要以下简单的几步:

  1. 使用列表解析,首先指定一个描述性的列表名(squares)。
  2. 指定一个左方括号,定义表达式(value**2),用于生成存储到列表的值。
  3. 编写for循环,用于给表达式赋值,再加上右方括号。

在本例中,for循环是for value in range(1,11),将值1~10赋给表达式value**2

练习题

4-3 数到20

使用一个for循环打印数字1~20(含)。

numbers_one_to_twenty = []
for value in range(1,21):
    numbers_one_to_twenty.append(value)
print(numbers_one_to_twenty)

输出结果:

>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

4-4 一百万

创建一个列表,其中包含数字1~1000000,再使用一个for循环将这些数字打印出来(如果输出的时间太长,按Ctrl+C停止输出,或关闭输出窗口)。

numbers_1_to_onemillion = []
for value in range(1,1000001):
    numbers_1_to_onemillion.append(value)
print(numbers_1_to_onemillion)

输出:略

4-5 计算1~1000000的和

创建一个列表,其中包含数字1~1000000,再使用min()max()核实该列表确实是从1开始,到1000000结束的。另外,对这个列表调用函数sum(),看看Python将一百万个数字相加需要多长时间。

numbers_1_million = []
for value in range(1,1000001):
    numbers_1_million.append(value)

print("\nThe min number is " + str(min(numbers_1_million)))
print("\nThe max number is " + str(max(numbers_1_million)))
print("\nThe sum is " + str(sum(numbers_1_million)))

输出结果:

>>>
The min number is 1

The max number is 1000000

The sum is 500000500000

4-6 奇数

通过给函数range()指定第三个参数来创建一个列表,其中包含1~20的奇数;再使用一个for循环将这些数字都打印出来。

odd_numbers = []
for value in range(1,21,2):
    odd_numbers.append(value)
print(odd_numbers)

输出结果:

>>> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

4-7 3的倍数

创建一个列表,其中包含3~30内能被3整除的数字;再使用一个for循环将这个列表中的数字都打印出来。

numbers_3 = []
for value in range(3,20,3):
    numbers_3.append(value)
print(numbers_3)

输出结果:

>>> [3, 6, 9, 12, 15, 18]

4-8 立方

将同一个数字乘三次称为立方。例如,在Python中,2的立方用2**3表示。请创建一个列表,其中包含前10个整数(即1~10)的立方,再使用一个for循环将这些立方数都打印出来。

numbers = []
for value in range(1,11):
    numbers.append(value**3)
print(numbers)

输出结果:

>>>
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

4-9 立方解析

使用列表解析生成一个列表,其中包含前10个整数的立方。

numbers_cube = [value**3 for value in range(1,11)]
print(numbers_cube)

输出结果:

>>>
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]