元组和列表是类似的, 只是元组不可修改内容
注意这里指的是不可修改元组元素的指向, 你可以修改内容指向的内容
>>>?lst?=?[1,?2,?3]#?定义列表>>>?a?=?(1,?2,?lst,?4)#?注意元组a的a[2]是一个列表
>>>?a
(1,?2,?[1,?2,?3],?4)
>>>?a[2]?=?4#?试图修改元组元素的指向,?报错
Traceback?(most?recent?call?last):
File?"<pyshell#3>",?line?1,?in?<module>a[2]?=?4
TypeError:?'tuple'?object?does?not?support?item?assignment
>>>?a[2][0]?=?0#?不修改元组元素的指向的元素,?但是修改指向的内容
>>>?a
(1,?2,?[0,?2,?3],?4)
>>>?a[2].append(5)#?不修改元组元素的指向的元素,?但是修改指向的内容
>>>?a
(1,?2,?[0,?2,?3,?5],?4)
字典完全区别于列表和元组
因为字典使用hash表来存储, 所以只有能够进行hash运算的才能作为键值
个人认为, 一般不可变的都能作为键, 比如str/tuple/None/function.列表不能作为键
最后, 由于字典是hash表算法{字典查找O(1), 列表遍历O(n)}, 在数据量巨大的时候, 字典的查找效率出奇的高