创建数值列表
列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理数字列表。
明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写的代码也能运行得很好。
-
使用函数 range()
数range()让你能够轻松地生成一系列的数字。
for
value
in
range
(
1
,
5
)
:
print
(
value
)
输出:
1
2
3
4
在这个示例中, range()只是打印数字1~4,这是你在编程语言中经常看到的差一行为的结果。
函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出
不包含第二个值(这里为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
)
在这个示例中,函数range()从2开始数,然后不断地加2,直到达到或超过终值( 11),因此
输出如下:[2, 4, 6, 8, 10]
-
对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、
最小值和总和:
digits
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
min
(
digits
)
#0
max
(
digits
)
#9
>>
>
sum
(
digits
)
#45
-
列表解析
前面介绍的生成列表squares的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。 列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
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。请注意,这里的for语句末尾没有冒号。
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
使用列表的一部分
处理列表的部分元素——Python称之为切片.
-
切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样, Python
在到达你指定的 第二个索引前面的元素后停止 。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、 1和2的元素。
players
=
[
'charles'
,
'martina'
,
'michael'
,
'florence'
,
'eli'
]
print
(
players
[
0
:
3
]
)
输出也是一个列表,其中包含前
三名队员:[‘charles’, ‘martina’, ‘michael’]
你可以生成列表的任何子集,例如,如果你要提取列表的第2~4个元素,可将起始索引指定
为1,并将终止索引指定为4:
players
=
[
'charles'
,
'martina'
,
'michael'
,
'florence'
,
'eli'
]
print
(
players
[
1
:
4
]
)
输出:[‘martina’, ‘michael’, ‘florence’]
如果你没有指定第一个索引, Python将自动从列表开头开始:
players
=
[
'charles'
,
'martina'
,
'michael'
,
'florence'
,
'eli'
]
print
(
players
[
:
4
]
)
输出:[‘charles’, ‘martina’, ‘michael’, ‘florence’]
负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。例如,如果你
要输出名单上的最后三名队员,可使用切片players[-3:]:
players
=
[
'charles'
,
'martina'
,
'michael'
,
'florence'
,
'eli'
]
print
(
players
[
-
3
:
]
)
打印最后三名队员的名字
-
遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片。在下面的示例中,我们遍历前三名
队员,并打印他们的名字:
players
=
[
'charles'
,
'martina'
,
'michael'
,
'florence'
,
'eli'
]
for
player
in
players
[
:
3
]
:
print
(
player
)
输出:
charles
martina
michael
-
复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引( [:])。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
my_foods
=
[
'pizza'
,
'falafel'
,
'carrot cake'
]
friend_foods
=
my_foods
[
:
]
print
(
"My favorite foods are:"
)
print
(
my_foods
)
print
(
"\nMy friend's favorite foods are:"
)
print
(
friend_foods
)
输出:
My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']