Python学习笔记(6)——list和tuple

这一章让我们继续学习Python的基础知识。

本文仅供个人记录和复习,不用于其他用途

list

list是Python中的一种数据结构,作为一种有序集合,list可以随时添加和删除元素:

>>> classmates = ['hyx', 'fantastic', 'miao']
>>> classmates
['hyx', 'fantastic', 'miao']

如果想要知道列表长度,我们可以使用len()

>>> len(classmates)
3

当然,与其他数据结构类似,索引是从0开始:

>>> classmates[0]
'hyx'
>>> classmates[1]
'fantastic'
>>> classmates[2]
'miao'

当索引为3时,Python就会报错,所以要记住最后一个元素的索引为len(classmates) - 1

如果要获取最后一个元素,我们可以直接用-1做索引:

>>> classmates[-1]
'miao'

类似的,-2-3也可以获取倒数第二个、第三个元素,不过同样不要越界。

list是一个可变有序表,可以向列表尾追加元素:

>>> classmates.append('Adam')
>>> classmates
['hyx', 'fantastic', 'miao', 'Adam']

我们也可以向指定位置插入元素:

>>> classmates.insert(1, 'huyinx')
>>> classmates
['hyx', 'huyinx', 'fantastic', 'miao', 'Adam']

如果想要删除列表尾的元素,可以使用pop()

>>> classmates.pop()
'Adam'
>>> classmates
['hyx', 'huyinx', 'fantastic', 'miao']

pop(i)可以删除指定位置的元素,只需要提供相应的索引即可:

>>> classmates.pop(1)
'huyinx'
>>> classmates
['hyx', 'fantastic', 'miao']

如果想要直接替换某位置上的元素,那么直接对其赋值即可:

>>> classmates[0] = 'huyinx'
>>> classmates
['huyinx', 'fantastic', 'miao']

当然,list没有规定存储类型,你可以向列表中加入任意类型的元素:

>>> List = ['huyinx', 123456, True, 90.1]

甚至可以往里面添加一个list列表:

>>> List[-1] = ['hyx', 'miao']
>>> List
['huyinx', 123456, True, ['hyx', 'miao']]

类似于C语言的二维数组,List只有四个元素,而它的第四个元素是一个列表,包含了两个元素:

>>> List[-1]
['hyx', 'miao']
>>> List[-1][0]
'hyx'

如果列表为空,那么它的长度为0:

>>> L = []
>>> len(L)
0

tuple

tuple是另外一种有序表,但它是不可变的:

>>> classmates = ('hyx', 'miao', 'huyinx')
>>> classmates
('hyx', 'miao', 'huyinx')

一旦确定下来,它就不能够再被更改。我们可以使用classmates[0]来访问数组,但是不能够改变它的值,也不会有insert()append()这样的方法。这样做的目的是为了稳定性,代码更加安全。所以,能够使用tuple就不要使用list。

由于tuple的特殊性,因此也产生了许许多多的陷阱。由于tuple创建时元素就必须确定(当然你也可以定义为空,不过那没有什么意义),当你定义一个元素时,就会出现下面这种情况:

>>> t = (1)
>>> t
1

你会发现,Python将t认作了整数1。这个其实是因为括号可以被认作是tuple,也可以被认作是数学符号,那么这就产生了歧义。由于小括号更常见一点,所以t = (1)就相当于是t = 1。因此,哪怕只有一个元素,我们最好也要加上逗号:

>>> T = (1,)
>>> T
(1,)

Python显示一个元素的tuple时,也会自动加上逗号,免得你误认为是数学符号。

当然,你可能觉得tuple太死板了,不够方便。那么你可以在tuple中加入list,使得tuple可变:

>>> Tuple = (1, 2, ['hyx', 'miao'])
>>> Tuple
(1, 2, ['hyx', 'miao'])

Tuple[-1]就是我们所熟悉的list,我们可以对其进行任意的修改。