网站搜索

学习 Python Set/Frozenset 数据结构 – 第 4 部分


在Python数据结构系列的第4部分中,我们将讨论什么是集合,它与Python中的其他数据结构有何不同,如何创建集合对象,删除集合对象以及集合对象的方法。

  • 集合对象是不同的可哈希对象的无序集合。
  • 设置会自动从对象中删除重复的项目。
  • 由于集合对象是无序的,因此不支持索引和切片操作。

目前有两种内置的集合类型。

  1. set – 由于它是可变的,因此它没有哈希值,不能用作字典键或另一个集合的元素。
  2. frozenset – 不可变且可散列 – 其内容在创建后无法更改;因此,它可以用作字典键或另一个集合的元素。

构造集合对象

使用构造函数方法“set()”或使用花括号和逗号分隔元素“{a,b,c}”创建一个集合。

注意:您不能通过空大括号构造集合对象,因为它将创建字典对象。

设置方法

使用内置的“dir()”函数列出可用的设置方法和属性。

添加元素以设置对象

正如已经说过的,set 是一个可变类型。一旦创建了集合对象,您就可以添加、删除、更新它。

我们先来说一下两个set方法addupdate

  • add(elem) 方法 – 此方法将单个元素添加到集合对象中。
  • update(*others) 方法 – 此方法将多个元素添加到集合对象中。您可以将可变/不可变对象作为更新方法中的参数传递。

注意:重复项将被自动删除。

从集合对象中删除/清除元素

正如您之前在其他数据结构主题(列表、元组、字典)中所看到的,对于 set,您还可以使用内置关键字 “del” 从命名空间中删除 set 对象(即 内存)。

以下是集合对象删除元素的方法。

  • clear() – 将清除所有元素,使集合为空。此 clear() 方法可用于提供相同功能的其他数据结构。
  • pop() – 删除任意元素。
  • discard(elem) – 如果在设置的对象中找不到该项目,则“discard()”方法不会引发任何错误。
  • remove(elem) – 与“discard()”方法相同,但当找不到项目时会引发KeyError。

设置操作

Set提供了执行数学运算的方法,例如交集、并集、差值和对称差值。还记得高中时代的“维恩图”吗?

我们将了解以下有关如何执行数学运算的方法。

  • 联盟
  • 路口
  • 交叉点更新
  • 对称差异
  • 对称差异更新
  • 不同之处
  • 差异更新
  • 不相交的
  • 是子集
  • 是超集

并集、交集、差集、对称差集

  • union(*other) – 返回一个新集合,其中包含该集合和所有其他集合中的元素。
  • intersection(*other) – 返回一个新集合,其中包含该集合和所有其他集合共有的元素。
  • difference(*others) – 返回一个新集合,其中包含该集合中不存在于其他集合中的元素。
  • symmetry_difference(other) – 返回一个新集合,其中元素既可以在该集合中,也可以在其他集合中,但不能同时在两者中。

交叉口_更新

intersection_update(*others) – 更新集合,仅保留其中找到的元素以及所有其他元素。

差异更新

difference_update(*others) – 更新集合,仅保留在其中和所有其他集合中找到的元素。

对称_差异_更新

symmetry_difference_update(other) – 更新集合,仅保留在任一集合中找到的元素,但不保留在两个集合中找到的元素。

Is不相交、Is子集、Is超集

  • isdisjoint(other) – 如果该集合没有与其他集合相同的元素,则返回 True。当且仅当它们的交集是空集时,集合是不相交的。
  • issubset() – 测试集合中的每个元素是否在另一个集合中。
  • issuperset() – 测试另一个元素中的每个元素是否都在集合中。

Copy() 方法

您可以使用 copy() 方法创建现有集合对象的相同副本。此方法也适用于其他数据结构类型,如列表、字典等......

使用内置的“del”关键字从命名空间中删除集合对象。

冷冻套装

  • 冻结集是不可变类型。一旦构建完成,您就无法添加、删除或更新列表中的元素。
  • 冻结集是不可变的,是可散列的,可以用作字典或另一个集合对象的元素的“键”
  • 冻结集是使用“frozenset()”函数构造的。
  • 与“集合”相比,冻结集合提供了相同的方法集,例如 union()、intersection、copy()、isdisjoint() 等。

概括

在本文中,您了解了什么是集合、集合和冻结集合之间的区别、如何创建和访问集合元素、集合方法等……