参考: https://www.liaoxuefeng.com/
List和Dict比较
dict有以下的特点:
1. 查找和插入的速度极快,不会随着key的增加而变慢;
2. 需要占用大量的内存,内存的浪费比较多。
list则相反:
1. 查找和插入的时间是随着元素的增加而不断增大;
2. 占用的空间小,浪费的内存比较少。
dict是一种用空间来换取时间的方法。
需要注意的是dict的key是一个不可变的对象。因为dict是根据key值来计算value的存储的位置,要是一个dict中出现相同的key值,则会发生混乱的。
dict内部根据key值来计算value的算法称为Hash算法。要保证Hash算法的正确性,作为key值的对象必须是不可变的。字符串和整数都是不可变的对象,but,list这些是可变的对象,不能作为key值。
for example:
>>> key = [1,2,3]
>>> d[key] = 'a list'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
Set
Set可以看做是数学意义上无序和无重复的元素的集合。因此可以利用set做数学意义上的交集和并集的操作等等。
>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
set和dict的唯一区别就在于set没有存储对应的value值,其他的和dict的机制是一致的,不能放入可变对象等等。