0 引子
这是一篇基础复习文档, 在写 python 脚本的时候, 确实感觉到 python 基础不扎实导致代码在运行时, 老是出现一些基础性的错误。因此决定接下来的一段时间对 python 的基础知识进行学习和巩固。
注意: 由于 python2 将会在不久之后失去支持, 官方也更推荐学 python3, 因此以下所有的知识点都是在 python3 上进行实践与学习。以下的 python 都可以默认为是 python3, 如果提到 python2 我会表明是 python2。
这篇是对python基础数据类型中的字典和集合进行学习。
1 字典
python 中有一种以键值对的形式存储数据的类型, 就是字典。在 python 中字典以唯一键对应唯一值的方式存储数据,这个与 java 中 map 的概念相类似, 字典中的键也可以看成是你所要取的值的索引, 通过这个索引来获取到你想要的值, 这么一说有和之前学习的 list 也类似了。但字典与 list 还是有一些不同, 在后面会介绍到。
字典的定义非常的简单, 字典内也可以包含多个元素, 每个元素都需要是键值对的形式。在获取值的时候, 我们通过键来取值。
在字典中, 由于是通过键来取值, 因此要求键是唯一且不变的, 即键不能重复且不能改变。想一想也能很快明白过来, 如果键重复的话, 那么通过这个键取值的时候怎么知道是要取哪个值呢?键不能改变这个涉及到了字典的取值原理, 接下来简单的介绍一下。
在使用上, 都知道了字典是通过键来取值, 在内部字典则是通过这个键, 通过哈希算法计算出该键所对应的值的地址的, 不同的键所计算出的地址当然是不一样的, 当改变键的时候其实也就相当于改变了在内存中的取值地址, 当然会取不到想要的值。
在字典中, 若是给一个存在值的键赋值, 那么原来的值会被覆盖掉。
如果取一个不存在的键的值, 那么就会报错, 因此为了避免这种情况, 可以现在取值前判断该键是否存在或者给其赋予一个默认值。
由于键的不可变性, 通常将字符串或者数字作为键, 像 list 这种由于其可变则不能作为字典中的键。
最后说说 list 与 dict 之间的区别, 在 list 中, 取值时,是通过索引取值, 但其实 list 的内部每次都是从头开始顺序查找, 直到找到所需要的值位置。这种机制导致当 list 的数据越大, 查找的速度则会越慢。而 dict 则是通过键来计算出值的内存地址, 然后通过这个地址直接在内存中取值, 因此其查找速度不受数据量大小的影响。当然相对的这种机制也是有代价的, 那就是 dict 存储数据所需要的内存占用会比 list 用的更多。
2 集合
python 中集合是一个无序不重复元素的序列, 光看定义可能会很不好理解, 结合实例看就很清晰了。
结果显示这个集合中的元素是1、2、3和4, 在定义中给了两个四, 结果中却只有一个, 很明显是被过滤掉了。而且其显示的顺序也不是根据定义时候的顺序来显示的。
集合的最主要的应用应该是在计算方面。简单的例如计算集合间的并集、差集和交集等。
总结
这里面最主要还是要记住一下, list 与 dict 的区别。
dict :
1、查找速度不受数据量大小影响
2、存储数据占用内存大
list :
1、数据量越大,查找速度越慢
2、存储数据占用内存小
领取专属 10元无门槛券
私享最新 技术干货