Python数据结构:集合、内置类型扩展与队列
1. 集合的特性与用途
集合不仅仅是简单的容器,它的方法表明集合主要用于对其他集合进行操作。当我们有来自两个不同数据源的数据,需要快速合并这些数据,或者确定数据的重叠部分与差异时,集合操作就能高效地完成这些任务。另外,如果新数据中可能包含已处理过的重复数据,我们可以使用集合来比较两者,只处理新数据。
在使用 in
关键字检查元素是否属于容器时,集合比列表更高效。使用 value in container
语法,若容器中有元素等于 value
,则返回 True
,否则返回 False
。在列表中,Python会逐个检查容器中的对象,直到找到该值;而在集合中,Python会对值进行哈希处理,然后检查成员资格。这意味着无论集合大小如何,查找值的时间都是相同的;而列表随着元素增多,查找值的时间会越来越长。
2. 扩展内置类型
当我们想为内置容器对象添加功能时,有两种选择:组合和继承。
- 组合 :如果只是想利用容器的特性来存储对象,组合通常是最佳选择。这样可以方便地将数据结构传递给其他方法,并且这些方法知道如何与之交互。
- 继承 :如果想改变容器的实际工作方式,则需要使用继承。例如,要确保列表中的每个项都是恰好包含五个字符的字符串,我们需要扩展 list
类,并重写 append()
方法,以便在输入无效时抛出异