【笔记】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)
创建列表解析需要以下简单的几步:
- 使用列表解析,首先指定一个描述性的列表名(
squares
)。 - 指定一个左方括号,定义表达式
(value**2)
,用于生成存储到列表的值。 - 编写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]