谈一谈List & Dict & Set

参考: 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的机制是一致的,不能放入可变对象等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值