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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-10
列表是一组值,其中的值可以改变
元组也是一组值,其中的值不能改变
列表与元组可以相互转换
集合是一组唯一的无顺序的值
字典是无固定顺序的键值对
第2个回答  2020-03-05
Python列表,元组,集合,字典的区别和相互转
相似回答