列表的可变和元组的不可变
>>> a = [1,2,3]
>>> id(a)
140223825504896
>>> a[0] = '1'
>>> id(a)
140223825504896
>>> a = (1,2,3)
>>> a[0] = '1'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
列表操作
>>> a = [1,2,3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
由于元组不可变,尝试向列表中append,会失败
>>> a = (1,2,3)
>>> a.append(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
可以看到列表的功能很强大,那为什么还会有元组这种类型呢?
通常我们写代码都是由很多人一起协作,这就存在代码的调用问题,如果某些常量被修改了,则会产生潜在的bug,很不安全,这时元组的强大之处就体现出来了,如果你想修改,对不起,直接报错,让你根本运行不起来
元组,列表可以存放任意的数据类型
如何访问下面的4呢?
>>> a = (1,2,3,[1,2,4])
>>> a[2]
3
>>> a[3]
[1, 2, 4]
>>> a[3][2]
4
如何访问b呢?
>>> a = (1,2,3,[1,2,['a','b','c']])
>>> a[3][2][1]
把4修改成 `'4'`
```python
>>> a = (1,2,3,[1,2,4])
>>> a[2]='3'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> a[3][2]='4'
>>> a
(1, 2, 3, [1, 2, '4'])
'b' ``` 可以看到,元组内部的list可以改的,为什么?元组的每个元素的地址没有改变就行了