Python 基础语法四-list 与 tuple
list
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
list 基本操作
-
len()
len() 用来计算 list 的长度,在交互模式下使用示例
>>> a = [] >>> list(a) 0 >>> b = [1, 'str', 3.14, a] >>> list(b) 4
-
+
+ 用来连接两个 list,在交互模式下使用示例
>>> a = ['python', 'keinYe'] >>> b = [1, 2, 3, 4] >>> a + b ['python', 'keinYe', 1, 2, 3, 4]
-
*
* 用来对一个 list 进行多次重复,在交互模式下使用示例
>>> a = ['python', 'keinYe'] >>> a * 2 ['python', 'keinYe', 'python', 'keinYe']
-
in
in 用来判断元素是否包含在 list 中,在交互模式下使用示例
>>> a = ['python', 'keinYe'] >>> 'python' in a True >>> 'mac' in a False
-
max 和 min
max 和 min 用来获取 list 中的最大值和最小值,在交互模式下使用示例
>>> a = [1, 3, 2, 6, 4, 9] >>> max(a) 9 >>> min(a) 1
-
增加和删除元素
append 和 insert 向 list 中增加元素.
append 用来向 list 末尾增加新的元素,insert 可以在 list 的指定位置增加新的元素。
>>> a = [1, 2, 3] >>> a.append(4) >>> a [1, 2, 3, 4] >>> a.insert(1, 5) >>> a [1, 5, 2, 3, 4]
pop 和 remove 从 list 中删除元素
remove 用来删除指定的元素,pop 用来删除末尾或指定位置的元素,同时返回被删除的元素。
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> a.remove(1) >>> a [2, 3, 4, 5, 6, 7] >>> a.remove(8) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list >>> a.pop() 7 >>> a [2, 3, 4, 5, 6] >>> a.pop(1) 3 >>> a [2, 4, 5, 6]
使用 remove 来删除 list 中的元素是,若 list 中不存在该元素,则会报错,故在使用 remove 前要先判断元素存在于 list 中。
list 索引
下标索引(类似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 中元素的数据类型是动态可变的。
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
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,)