在 Python 中不使用库集合类的情况下定义集合数据结构的程序
pythonserver side programmingprogramming更新于 2026/1/3 10:52:17
假设我们想要使用以下方法实现集合数据结构 −
- 构造函数构造集合的新实例
- add(val) 将整数 val 插入集合中
- exists(val) 检查 val 是否在集合中
- remove(val) 从集合中删除 val
因此,如果我们构造一个集合 s,然后调用 s.add(10)、s.add(20)、s.add(10)、s.exists(10)、s.remove(10)、s.exists(10)、s.exists(20),则输出将是
- 对于 s.add(10),它将插入10
- 对于 s.add(20),它将插入 20
- 10 已经在 s 中,因此不会发生任何事情
- s.exists(10) 将返回 true,因为 10 在那里
- 通过 s.remove(10) 删除 10
- s.exists(10) 将返回 false,因为 10 已被删除,并且一个元素只能出现一次
- s.exists(20) 将返回 true,因为 20 在那里。
为了解决这个问题,我们将遵循以下步骤 −
- 定义构造函数。
- buckets := 一个空的映射,它将保存一个数据列表
- 定义一个函数 add() 。这将采用 val
- 如果 exist(val) 为 false,则
- 在 buckets[val] 末尾插入 val
- 定义一个函数 exist() 。这将采用 val
- 当 val 在 buckets[val] 中时返回 true,否则返回 false
- 定义一个函数 remove()。这将采用 val
- 删除 buckets[val]
示例
让我们看看下面的实现以便更好地理解 −
from collections import defaultdict class MySet: def __init__(self): self.buckets = defaultdict(list) def add(self, val): if not self.exists(val): self.buckets[val].append(val) def exists(self, val): return val in self.buckets[val] def remove(self, val): del self.buckets[val] s = MySet() s.add(10) s.add(20) s.add(10) print(s.exists(10)) s.remove(10) print(s.exists(10)) print(s.exists(20))
输入
s = MySet() s.add(10) s.add(20) s.add(10) s.exists(10) s.remove(10) s.exists(10) s.exists(20)
输出
True False True
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

