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)。第一个元素的索引是0,序列中的元素都可以通过索引进行访问。其一般格式为:
序列名[索引]
列表与元组的正向索引查询如下所示:
>>>list_l = [1,2,3] >>>list_l[1] 2 >>>tuple_l = ((1,2,3)) >>>tuple[0] 1
另外,Python序列还支持反向索引(负数索引)。这种索引方式可以从最后一个元素开始计数,即倒数第一个元素的索引是-1。这种方法可以在不知道序列长度的情况下访问序列最后面的元素。
列表与元组的反向索引查询如下所示:
>>>list_l = [1,2,3] >>>list_l[-1] 3 >>>tuple_l = ((1,2,3)) >>>tuple[-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 列表对象的主要操作方法
class="thirdTitle" id="bw25">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)操作会将列表中出现的第一个x删除。
>>>x = [1,2,3, 'a'] >>>x.remove(2) >>>x [1,3, 'a']
列表的基本操作还有很多,在此不再一一列举,感兴趣的读者可以上网查阅。