在Python中不使用库集合类定义集合数据结构的程序
假设我们想使用以下方法实现一个集合数据结构-
构造集合的新实例的构造函数
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。
示例
让我们看看以下实现以获得更好的理解-
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