如何在 Python 中设计一个 Hashset?13 Jan 2025 | 7 分钟阅读 我们知道 HashSet 是 Java 中一个著名的类。HashSet 用于使用哈希表存储值。在本教程中,我们将介绍 Python 中的 HashSet。我们还将学习如何在 Python 中设计 HashSet。 HashSet 是编程中的一个基本数据结构,常见于 Java 等语言中。它属于 Java Collections Framework,是 Set 接口的实现。HashSet 的独特之处在于它能够以一种方便高效地检查特定元素是否存在的方式存储元素,并确保集合内的唯一性。与列表等结构不同,HashSet 不会维护元素之间的任何特定顺序。 HashSet 的一个关键特性是保证唯一性;它不允许重复元素。添加、删除和检查元素是否存在等操作通常具有平均恒定时间性能,使其成为此类任务的有效选择。但是,需要注意的是,HashSet 中元素的顺序不保证。 关键特性唯一性:HashSet 不允许重复元素。它使用 equals() 方法检查重复项,确保集合中的每个元素都是唯一的。 无序:HashSet 中的元素不是按任何特定顺序存储的。如果您需要维护元素的顺序,可以考虑使用 LinkedHashSet,它会维护插入顺序。 底层数据结构:内部,HashSet 使用哈希表来存储元素。这使得 add、remove 和 contains 等基本操作具有平均恒定时间复杂度。 Null 元素:HashSet 允许一个 null 元素。如果您尝试添加重复的 null 元素,它将替换现有的元素。 引言我们可以在不使用任何哈希表库的情况下设计 HashSet。以下是多个不同的函数 - add(x) - add(x) 方法主要用于将值 x 插入 HashSet。 contains(x) - contains(x) 方法主要用于检查值 x 是否存在于 HashSet 中。 remove(x) - remove(x) 方法主要用于从 HashSet 中删除 x。如果 HashSet 中没有该值,它将不做任何操作。 让我们通过以下示例来理解这些方法。 首先,初始化 HashSet 并调用 add(1) 函数。它会将 1 添加到哈希集中。调用 add(3),它会添加 3,然后调用 contains(1)。它会检查 1 是否存在于哈希集中。现在我们调用 contains(2),add(2),contains(2),remove(2),contains(2)。 输出将分别为 1 存在时返回 true,2 不存在时返回 false,2 存在时返回 true,2 不存在时返回 false。 Python 中 HashSet 的基本操作我们可以使用以下方法对 HashSet 执行一些基本操作。让我们来理解这些方法。 在 HashSet 中添加新值在下面的示例中,我们将使用 add() 函数向哈希集中添加值。add() 函数一次添加一个值。让我们看下面的代码。 示例 - 输出 Adding value: 2 Adding value: 7 Adding value: 6 从 HashSet 中删除值我们可以使用 remove() 函数删除现有值。让我们来理解下面的代码。 示例 - 输出 Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6 检查值是否存在于 HashSet 中在此示例中,我们将演示如何使用 **contains()** 函数检查某个特定值是否存在。让我们来理解下面的代码。 示例 - 输出 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 Python 中 HashSet 的算法第一步,我们定义一个名为 HashList 的数据结构。然后,我们初始化一个空列表作为 **a new_list**。然后,我们定义一个 update() 函数,其中 found 将存储布尔值 False。现在,我们使用 for 循环遍历每个索引 I 和 K。如果键与 'k' 相同,则 **new_list[i]=k** 并将 found 值设置为 True。如果找不到值,则该值将插入到列表的末尾。 下一步是定义 get() 函数,我们将用于循环,并且如果 k 的值与键相同,则输出为 True;否则为 False。如果键与 'k' 相同,则从列表 **new_list 中删除该值。remove() 函数也将应用相同的过程。** 现在,我们将创建 Main 类 HashSet。此类将声明初始化函数,其中 key_space 值 = 2096。hash_table 将包含大小为 **key_space** 的 new_list 类型对象的列表。然后,我们将创建 add() 函数,其中 **hash_key = key%key_space** 并更新 hash_table[hash_key] 的键。之后,我们将调用 **remove 函数**,其中 hash_key = key % key_space,并删除 hash_table[hash_key] 的键。之后,我们将调用 **contains 函数**,其中 hash_key = key % key_space,并获取 hash_table[hash_key] 的键。 让我们看一下分步实现算法。 算法 -
HashSet 在 Python 中的实现在这里,我们将实现上述算法并创建 Python 程序。我们将定义两个类:HashSet 和 CreateHashset。让我们看下面的代码。 代码 - 输出 10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10] 说明
|
Selenium 是一个用于自动化 Web 浏览器和测试 Web 应用程序的强大工具。它提供了广泛的方法和技术来与 Web 元素进行交互。最常用的方法之一是 find_elements_by_partial_link_text()。此方法允许您在网页上定位元素...
阅读 3 分钟
Faker Python简介Faker是一个开源库,也称为Faker,可帮助用户构建其数据集。我们可以使用Name、Age、Location等随机属性生成随机数据。Faker库支持所有中心位置和语言,对...有利
阅读9分钟
我们中的许多人通常不感兴趣阅读完整的报纸甚至完整的文章。在这种情况下,我们只希望了解文章中的关键词、标题或许多这样的小内容,这样我们就无需花费太多时间阅读……
阅读 8 分钟
在本教程中,我们将学习如何检测给定的字符串是否是字谜(anagram)。但首先我们应该熟悉字谜的概念。什么是字谜?字谜是一种情况,其中一个字符串或数字被重新排列,使得重新排列后的字符串的每个字符...
5 分钟阅读
特征向量是特定可观察现象的可量化特征。一个很好的例子是人类类别的高度和体重特征,因为它们可以被看到和测量。假设它们将具有静态或非线性关系,我们通常依赖计算机特征...
阅读 3 分钟
Python 中“==”和“is”运算符的区别 在 Python 中比较对象时,身份运算符通常用于应使用相等运算符 == 的地方。在实践中,在尝试比较数据时使用 is 很少是一个好主意。身份运算符...
阅读 3 分钟
在接下来的教程中,我们将学习如何使用 Python 编程语言中的 Tkinter 库创建一个标准的单位转换器。但在我们开始构建项目之前,让我们简要讨论一下单位转换和一些相关方面。理解单位...
阅读 26 分钟
Django 是一个流行的 Web 框架,它建立在 Python 编程语言之上。它为开发人员提供了强大的工具集,使他们能够快速构建健壮、可扩展和安全的 Web 应用程序。Django 的主要功能之一是它的...
阅读 3 分钟
Python 是最强大的编程语言。它提供了广泛的工具和库来完成各种任务。主要工具之一是 subprocess 模块。它允许程序员生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码……
5 分钟阅读
NumPy是Python中一个强大的库,它提供了一个用于操作大型多维数组和统计矩阵的指南,以及一组对这些数组进行操作的数学函数。一个方便的功能是在操作时可用...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India