python学习笔记——列表(list)和元组(tuple)


一、列表(list)

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
例如:列出一些人名:

>>> name=['Mike','Lucy','Jane']
>>> name
['Mike', 'Lucy', 'Jane']
>>> type(name)
<class 'list'>

其中name就是一个list,用len函数可以获取列表元素的个数:

>>> len(name)
3

1.索引操作

>>> name[1]#正向索引(左往右索引,从0开始)
'Lucy'
>>> name[-1]#负向索引(右往左索引,从-1开始)
'Jane'
>>> name[3]#正向索引越界
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    name[3]
IndexError: list index out of range
>>> name[-4]#负向索引越界
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    name[-4]
IndexError: list index out of range

2.添加元素

#添加元素到列表末尾
>>> name.append('Bob')
>>> name
['Mike', 'Lucy', 'Jane', 'Bob']
#在列表中指定位置插入新元素
>>> name.insert(1,'Nike')#将新元素插入到列表中索引为1的元素之前
>>> name
['Mike', 'Nike', 'Lucy', 'Jane', 'Bob']

3.删除元素

#删除列表最后一个元素
>>> name.pop()
'Bob'
>>> name
['Mike', 'Nike', 'Lucy', 'Jane']
#删除列表指定位置的元素
>>> name.pop(1)#删除列表中索引为1的元素
'Nike'
>>> name
['Mike', 'Lucy', 'Jane']

4.元素的替换

#直接采用索引赋值的方式即可
>>> name[1]='Peter'
>>> name
['Mike', 'Peter', 'Jane']

5.补充

list的元素类型可以不同,如

>>> L = ['Apple', 123, True]

list的元素也可以是另外一个list,如

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

要拿到'php'可以用s[2][1],因此s可以看成是一个二维数组,类似的还有三维、四维……数组,不过很少用到。
如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

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

二、元组(tuple)

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

>>> classmates = ('Michael', 'Bob', 'Tracy')

现在,classmates这个tuple不能变了,它也没有append()insert()这样的方法。其他获取元素的方法和list是一样的,也可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。
不可变的tuple可以使代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

>>> t = (1, 2)
>>> t
(1, 2)
#定义空元组
>>> t=()
>>> t
()
#定义只有一个元素的元组(要在元素后面加上逗号)
>>> tuple_1=(1)
>>> type(tuple_1)
<class 'int'>
>>> tuple_2=(1,)
>>> type(tuple_2)
<class 'tuple'>

注意:元组里的元素如果有列表,那么该列表里的元素可以改变,因为此时元组里的元素其实是没有改变的,tuple指向的那个list还是那个list。所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!例子:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

此时运行不报错,说明该元组是“可变的”


文章作者: Reset Ran
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Reset Ran !
  目录