2.5 列表与元组
在Python中,每个元素按照位置编号来顺序存取的数据类型称为序列类型,这就类似于C语言中的数组。不同的是,在Python中,列表和元组这两种序列可以存储不同类型的元素。
对于列表和元组来说,它们的大部分操作是相同的,不同的是列表的值是可以改变的,而元组的值是不可变的。Python中,这两种序列在处理数据时各有优缺点。元组适合于数据不希望被修改的情况,而列表则适合于数据希望被修改的情况。
2.5.1 创建
1.列表创建
列表创建采用在方括号中用逗号分隔的定义方式,基本形式如下:
[x1,[x2, ···,xn]]
列表也可以通过list对象来创建,基本形式如下:
list() # 创建一个空列表 list(iterable) # 创建一个空列表,iterable为枚举对象的元素
列表创建示例如下:
>>>[ ] # 创建一个空列表 >>>[1, 2, 3] # 创建一个元素为1、2、3的列表 >>>list() # 使用list创建一个空列表 >>>list((1, 2, 3)) # 使用list创建一个元素为1、2、3的列表 >>>list("a, b, c") # 使用list创建一个元素为a、b、c的列表
2.元组创建
元组创建采用在圆括号中用逗号分隔的定义方式,其中,圆括号可以省略。基本形式如下:
(x1,[x2, ···,xn])
或者
x1,[x2, ···,xn]
注意:当元组中只有一个项目时,其后面的逗号不可以省略,否则,Python解释器会把(x1)当作x1。
元组也可以通过tuple对象来创建,基本形式如下:
tuple() # 创建一个空元组 tuple(iterable) # 创建一个空元组,iterable为枚举对象的元素
元组创建示例如下:
>>> [ ] # 创建一个空元组 >>>[1, 2, 3] # 创建一个元素为1、2、3的元组 >>>tuple () # 使用tuple创建一个空元组 >>>tuple ((1, 2, 3)) # 使用tuple创建一个元素为1、2、3的元组 >>>tuple ("a,b,c") # 使用tuple创建一个元素为a、b、c的元组
2.5.2 查询
列表和元组都支持查询(访问)其中的元素。在Python中,序列的每一个元素被分配一个位置编号,称为索引(index)。第1个元素的索引是0,序列的元素都可以通过索引进行访问。其一般格式为:
序列名[索引]
列表与元组的正向索引查询示例如下:
>>>list_l = [1,2,3] >>>list_l[1] 2 >>>tuple_l = ((1,2,3)) >>>tuple_1[0] 1
另外,Python序列还支持反向索引(负数索引)。这种索引方式可以从最后一个元素计数,倒数第1个元素的索引是–1。这种方法可以在不知道序列的长度时访问序列最后面的元素。
列表与元组的反向索引查询示例如下:
>>>list_l = [1,2,3] >>>list_l[-1] 3 >>>tuple_l = ((1,2,3)) >>>tuple–1[-2] 2
2.5.3 修改
对于修改操作,由于元组的不可变性,所以元组的数据不可以被改变,除非将其改为列表类型。
对于列表来说,修改其中某一个值可以采用索引的方式,这种操作也叫赋值。
>>>list_l = [1,2,3] >>>list_l[1] = 9 >>>list_l [1,9,3]
注意:在对列表进行赋值操作时,不能为一个没有索引的元素赋值。
下面再介绍两个Python自带的函数append、extend。append函数的作用是在列表末尾添加一个元素。
>>>list_l = [1,2,3] >>>list_l.append(4) >>>list_l [1,2,3,4]
在Python中,extend函数是将一个列表添加到另一个列表的尾部。
>>>list_1 = [1,2,3] >>>list_l.extend(‘a,b,c’) >>>list_l [1,2,3,a,b,c]
由于元组的不可变性,我们不能改变元组的元素,但是,可以将元组转换为列表进行修改。
>>>tuple_l = [1,2,3] >>>list_l = list(tuple) # 元组转列表 >>>list_l[1] = 8 >>>tuple_1 = tuple(list_1) # 列表转元组 >>>tuple_1 (1,8,3)
列表作为一种可变对象,在Python中有很多方法可以对其进行操作,如表2-2所示。
表2-2 列表对象的主要方法
2.5.4 删除
元素的删除操作也只适用于列表,而不适用于元组。同样,将元组转换为列表后便可以进行删除操作。
从列表中删除元素很容易,可以使用del、clear、remove等操作。下面一一举例。
>>>x = [1,2,3, 'a'] >>>del x[3] >>>x [1,2,3]
del不仅可以删除某个元素,还可以删除对象。例如:
>>>x = [1,2,3, 'a'] >>>del x >>>x # 错误语句
上面的程序中因为x对象已被删除,所以会提示:
NameError:name 'x' is not defined
clear操作可删除列表中所有的元素。
>>>x = [1,2,3, 'a'] >>>x.clear() >>>x []
remove(x)操作会将列表中出现的第1个x对象删除。
>>>x = [1,2,3, 'a'] >>>x.remove(2) >>>x [1,3, 'a']
列表的基本操作还有很多,在此就不再一一举例,感兴趣的读者可以在网上查阅。