list(列表)是有序、可变的数据集合,可以随时添加、删除和修改元素,同时也是 python 内置的一种数据类型。
在 python 中使用一对方括号[]
来定义一个 list。list 中的元素可以是任意的数据类型,甚至元素可以是一个 list。
list 可以看做是 C 或 java 中的数组,list 和数组最大的不同是 list 中的元素可以是不同的数据类型,而数组在定义后要求内部元素的数据类型必须与定义时的数据类型相同。
下面是一个 list 的定义
>>> a = []
>>> type(a)
<class 'list'>
>>> print(a)
[]
>>> b = [1, 'str', 3.14, a]
>>> print(b)
[1, 'str', 3.14, []]
>>> bool(a)
False
>>> bool(b)
True
下标索引(类似C中数组索引),反向索引下标为负值。在 list 中索引是以元素为单位进行的
>>> a = [1, 'python', 3.14]
>>> a[0]
1
>>> a[3]
raceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> a[len(a)-1]
3.14
>>> a[-1]
3.14
>>> a[-2]
'python'
>>> a[-3]
1
list 的索引范围为 0 到 len(list) - 1 或者 -1 至 -len(list),当索引超出范围时,python 会报 IndexError 错误。
使用下标索引也可以替换 list 中的元素
>>> a = [1, 'python', 3.14]
>>> a[0] = 5
>>> a
[5, 'python', 3.14]
>>> a[1] = 10
>>> a
[5, 10, 3.14]
从以上示例可以看出使用 list 下标索引不仅可以更改 list 的元素值,还可以使用不同的数据类型来替换 list 中的元素。
对象有类型,变量无类型。list 中元素的数据类型是动态可变的。
可以使用 sort 函数来对 list 进行排序。
sort(*, key=None, reverse=False) This method sorts the list in place, using only < comparisons between items. Exceptions are not suppressed - if any comparison operations fail, the entire sort operation will fail (and the list will likely be left in a partially modified state).
>>> a = [2, 5, 9, 4, 1, 3, 8, 6]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 8, 9]
sort 函数默认对 list 进行升序排列, list.sort() 是对列表进行原地修改,没有返回值。
由于 sort 函数默认是对 list 机型升序排列,有时我们需要对 list 进行降序排列,这时就用到了 sort 函数的 reverse 参数
>>> a = [2, 5, 9, 4, 1, 3, 8, 6]
>>> a.sort(reverse=True)
>>> a
[9, 8, 6, 5, 4, 3, 2, 1]
tuple (元组)也是一种有序列表,和 list 不同的是 tuple 一旦初始化就不能修改
元组是用圆括号括起来的,其中的元素之间用逗号隔开。
>>> tuple = (1, 'python', [1, 2, 3])
>>> type(tuple)
<class 'tuple'>
>>> tuple
(1, 'python', [1, 2, 3])
元组初始化后不能修改,误修改时 python 会报TypeError
错误。
>>> tuple = (1, 'python', [1, 2, 3])
>>> tuple[0] = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
创建空的元组
>>> tuple = ()
>>> tuple
()
创建仅有一个元素的元组
>>> tuple = (1,)
>>> tuple
(1,)