成语大全网 - 汉语词典 - Python列表,元组,集合,字典的区别和相互

Python列表,元组,集合,字典的区别和相互

元组和列表是类似的, 只是元组不可修改内容

注意这里指的是不可修改元组元素的指向, 你可以修改内容指向的内容

>>>?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)}, 在数据量巨大的时候, 字典的查找效率出奇的高