深度学习:卷积神经网络技术与实践
上QQ阅读APP看书,第一时间看更新

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']

列表的基本操作还有很多,在此就不再一一举例,感兴趣的读者可以在网上查阅。