《Python语言程序设计》 —2.2.3 List
2.2.3 List
List(列表)是Python中一种非常重要的数据类型。列表中可以包含多个元素,且元素类型可以不相同。每一元素可以是任一数据类型,包括列表(即列表嵌套)及后面要介绍的元组、集合、字典。所有元素都写在一对方括号“[...]”中,每两个元素之间用逗号分隔。不包含任何元素的列表(即[])称为空列表。
列表中元素的索引方式与字符串中元素的索引方式完全相同,也支持从前向后索引和从后向前索引两种方式。例如,对于ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]这个列表,其各元素的下标如图2-2所示。
图2-2 列表索引方式示例
与字符串相同,利用下标“[]”可以从已有列表中取出其中部分元素形成一个新列表,其语法格式如下:
ls[beg:end]
其中,ls为列表,beg是要取出的部分元素在ls中的起始下标,end是要取出的部分元素在ls中的结束下标。省略beg,则表示从ls中的第一个元素开始,等价于ls[0:end];省略end,则表示要取出的部分元素从beg位置开始一直到最后一个元素(包括最后一个元素);beg和end都省略,则取出ls中的所有元素。
例如,对于下面的代码:
1 ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]
2 print(ls[1:4]) #输出[2.5, 'test', (3+4j)]
3 print(ls[-3:-1]) #输出[True, [3, 1.63]]
4 print(ls[2:-1]) #输出['test', (3+4j), True, [3, 1.63]]
5 print(ls[:3]) #输出[1, 2.5, 'test']
6 print(ls[-2:]) #输出[[3, 1.63], 5.3]
7 print(ls[:]) #输出[1, 2.5, 'test', (3+4j), True, [3, 1.63], 5.3]
执行完毕后,第2~7行代码可以按每行代码对应注释中的描述输出结果。
如果只访问列表ls中的某一个元素,则可以使用下面的写法:
ls[idx]
其中,idx是要访问的元素的下标。例如,对于下面的代码:
1 ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]
2 print(ls[2]) #输出test
3 print(ls[-3]) #输出True
执行完毕后,第2行和第3行代码分别按每行代码对应注释中的描述输出结果。
注意 ls[beg:end]返回的仍然是一个列表;而ls[idx]返回的是列表中的一个元素。例如,对于ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3],通过print(ls[2:3])和print(ls[2])输出的结果分别是['test']和test。可见,ls[2:3]返回的是只有一个字符串元素'test'的列表,而ls[2]返回的则是ls中第3个元素的值(即字符串'test')。
另外,通过下标“[]”不仅可以访问列表中的某个元素,还可以对元素进行修改。例如,对于如下的代码:
1 ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]
2 print(ls) #输出[1, 2.5, 'test', (3+4j), True, [3, 1.63], 5.3]
3 ls[2]=15 #将列表ls中第3个元素的值改为15
4 print(ls) #输出[1, 2.5, 15, (3+4j), True, [3, 1.63], 5.3]
5 ls[1:4]=['python',20] #将列表ls中第2~4个元素替换为['python',20]中的元素
6 print(ls) #输出[1, 'python', 20, True, [3, 1.63], 5.3]
7 ls[2]=['program',23.15] #将列表ls中第3个元素替换为['program',23.15]
8 print(ls) #输出[1, 'python', ['program', 23.15], True, [3, 1.63], 5.3]
9 ls[0:2]=[] #将列表ls中前两个元素替换为空列表[],即将前两个元素删除
10 print(ls) #输出[['program', 23.15], True, [3, 1.63], 5.3]
执行完毕后,第2、4、6、8行代码分别按每行代码对应注释中的描述输出结果。
注意 在对列表中的元素赋值时,既可以通过ls[idx]=a这种方式修改单个元素的值,也可以通过ls[beg:end]=b这种方式修改一个元素或同时修改连续多个元素的值。但需要注意,在通过ls[beg:end]=b方式赋值时,b是另一个列表,其功能是用b中各元素替换ls中beg至end-1这些位置上的元素,赋值前后列表元素数量允许发生变化。
例如,上面所示的代码中,第3行和第7行都是修改列表ls中某一个元素的值,在为单个元素赋值时,可以使用任意类型的数据(包括列表,如第7行);第5行是将列表ls中第2~4个元素修改为另一个列表['python',20]中的两个元素;第9行是将列表ls中前两个元素修改为另一个空列表“[]”中的元素,相当于将ls中前两个元素删除。
- 点赞
- 收藏
- 关注作者
评论(0)