>>> from env_helper import info; info()
页面更新时间: 2020-02-27 18:54:46
操作系统/OS: Linux-4.19.0-8-amd64-x86_64-with-debian-10.3 ;Python: 3.7.3
4.1. 列表¶
列表(List)是最基本的Python数据结构,它是通过对数据元素进行编号将它们组织在一起的数据元素的集合。
列表可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定列表的长度以及确定最大和最小的元素的方法。
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
>>> list1 = ['physics', 'chemistry', 1997, 2000]
>>> list2 = [1, 2, 3, 4, 5 ]
>>> list3 = ["a", "b", "c", "d"]
4.1.1. 列表数据类型¶
“列表”是一个值,它包含多个字构成的序列。
术语“列表值”指的是列表本身(它作为一个值,
可以保存在变量中,或传递给函数,像所有其他值一样),
而不是指列表值之内的那些值。列表值看起来像这样:
[ 'cat' ,'bat' ,'rat' , 'elephant']
。
就像字符串值用引号来标记字符串的起止一样,
列表用左方括号开始,右方括号结束, 即 []
。列表中的值也称为“表项”。
表项用逗号分隔(就是说,它们是“逗号分隔的”)。
例如,在交互式环境中输入以下代码:
>>> [1, 2, 3]
[1, 2, 3]
>>> ['cat', 'bat', 'rat', 'elephant']
['cat', 'bat', 'rat', 'elephant']
>>> ['hello', 3.1415, True, None, 42]
['hello', 3.1415, True, None, 42]
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam
['cat', 'bat', 'rat', 'elephant']
spam
变量仍然只被赋予一个值:列表值。但列表值本身包含多个值。[]
是一
个空列表,不包含任何值,类似于空字符串
4.1.2. 用下标取得列表中的单个值¶
假定列表 [ 'cat' , 'bat', 'rat', 'elephant']
保存在名为 spam
的变量中。 Python 代码 spam[0]
将求值为 'cat'
,spam[l]
将求值为 'bat'
, 依此类推。列表后面方括号内的整数被称为“下标”。
列表中第一个值的下标是 0
,第二个值的下标是1,第三个值的下标是2,
依此类推。
例如,在交互式环境中输入以下表达式。 开始将列表赋给变量 spam
。
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[0]
'cat'
>>> spam[1]
'bat'
>>> spam[2]
'rat'
>>> spam[3]
'elephant'
>>> ['cat', 'bat', 'rat', 'elephant'][3]
'elephant'
>>> 'Hello '+ spam[0]
'Hello cat'
>>> 'The ' + spam[1] + ' ate the ' + spam[0] + '.'
'The bat ate the cat.'
请注意,表达式 'Hello'+ spam[0]
求值为 'Hello'+'cat'
,因为spam[0]
求值为字 符串 'cat'
。这个表达式也因此求值为字符串'Hello cat'
。
如果使用的下标超出了列表中值的个数, Python 将给出 IndexError
出错信息。
spam = ['cat', 'bat', 'rat', 'elephant']
spam[10000]
IndexError: list index out of range
下标只能是整数,不能是浮点值。下面的例子将导致 TypeError
错误:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[1]
'bat'
spam[1.0]
TypeError: list indices must be integers or slices, not float
>>> spam[int(1.0)]
'bat'
列表也可以包含其他列表值。这些列表的列表中的值,可以通过多重下标来访问,像这样:
>>> spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]
>>> spam[0]
['cat', 'bat']
>>> spam[0][1]
'bat'
>>> spam[1][4]
50
4.1.3. 负数下标¶
虽然下标从 0
开始并向上增长,但也可以用负整数作为下标。 整数值
-1
指的是列表中的最后一个下标, -2
指的是列表中倒数第二个下标,以此类推。 在交互式环境中输入以下代码:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[-1]
'elephant'
>>> spam[-3]
'bat'
>>> 'The ' + spam[-1] + ' is afraid of the ' + spam[-3] + '.'
'The elephant is afraid of the bat.'
4.1.4. 利用切片取得子列表¶
就像下标可以从列表中取得单个值一样, “切片”可以从列表中取得多个值, 结果是一个新列表。切片输入在一对方括号中, 像下标一样,但它有两个冒号分隔 的整数。请注意下标和切片的不同。
spam[2]
是一个列表和下标(一个整数)。spam[l:4]
是一个列表和切片(两个整数)。
在一个切片中,第一个整数是切片开始处的下标。 第二个整数是切片结束处的下标。切片向上增长, 直至第二个下标的值,但不包括它。切片求值为一个新的列表值。 在交互式环境中输入以下代码:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>>
>>> spam[0:4]
['cat', 'bat', 'rat', 'elephant']
>>> spam[1:3]
['bat', 'rat']
>>> spam[0:-1]
['cat', 'bat', 'rat']
作为快捷方法,你可以省略切片中冒号两边的一个下标或两个下标。
省略第一个下标相当于使用 0
,或列表的开始。
省略第二个下标相当于使用列表的长度,
意味着分片直至列表的末尾。在交互式环境中输入以下代码:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[:2]
['cat', 'bat']
>>> spam[1:]
['bat', 'rat', 'elephant']
>>> spam[:]
['cat', 'bat', 'rat', 'elephant']