本文仅供个人记录和复习,不用于其他用途
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,我们可以对其进行任意的修改。