Python Data Structure 简明教程

Python - Sets

在数学上,集合是按任何特定顺序排列的项的集合。Python 集合类似于该数学定义,附加以下条件。

  1. 集合中的元素不应重复。

  2. 集合中的元素是不可变的(不能修改),但整个集合是可变的。

  3. Python 集合中的任何元素都没有附加索引。因此,它们不支持任何索引或切片操作。

Set Operations

Python 中的集合通常用于数学运算,如并集、交集、差集和补集等。我们可以创建一个集合,访问其元素并进行如下所示的数学运算。

Creating a set

使用 set() 函数或将所有元素放在一对大括号中来创建集合。

Example

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
Months={"Jan","Feb","Mar"}
Dates={21,22,17}
print(Days)
print(Months)
print(Dates)

Output

执行以上代码时,它将产生以下结果。请注意结果中元素的顺序如何改变。

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
set(['Jan', 'Mar', 'Feb'])
set([17, 21, 22])

Accessing Values in a Set

我们无法在集合中访问单个值。我们只能像上面所示那样一起访问所有元素。但是我们也可以通过遍历集合来获取单个元素的列表。

Example

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])

for d in Days:
   print(d)

Output

执行上述代码后,将生成以下结果 −

Wed
Sun
Fri
Tue
Mon
Thu
Sat

Adding Items to a Set

我们可以通过使用 add() 方法将元素添加到集合中。再次如所讨论的,没有特定索引附加到新添加的元素。

Example

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])

Days.add("Sun")
print(Days)

Output

执行上述代码后,将生成以下结果 −

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Removing Item from a Set

我们可以通过使用 discard() 方法从集合中删除元素。再次如所讨论的,没有特定索引附加到新添加的元素。

Example

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])

Days.discard("Sun")
print(Days)

Output

执行以上代码时,它将产生以下结果。

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Union of Sets

对两个集合的并集运算产生一个新集合,其中包含两个集合的所有不同元素。在下面的示例中,元素“星期三”存在于两个集合中。

Example

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA|DaysB
print(AllDays)

Output

执行以上代码时,它将产生以下结果。请注意结果只有一个“星期三”。

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

Intersection of Sets

对两个集合的交集运算产生一个新集合,其中仅包含两个集合的公共元素。在下面的示例中,元素“星期三”存在于两个集合中。

Example

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA & DaysB
print(AllDays)

Output

执行以上代码时,它将产生以下结果。请注意结果只有一个“星期三”。

set(['Wed'])

Difference of Sets

对两个集合的差集运算产生一个新集合,其中仅包含第一个集合的元素,而不包含第二个集合中的任何元素。在下面的示例中,元素“星期三”存在于两个集合中,因此不会出现在结果集中。

Example

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA - DaysB
print(AllDays)

Output

执行以上代码时,它将产生以下结果。请注意结果只有一个“星期三”。

set(['Mon', 'Tue'])

Compare Sets

我们可以检查给定的集合是否是另一个集合的子集或超集。结果根据集合中存在的元素确定为 True 或 False。

Example

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
SubsetRes = DaysA <= DaysB
SupersetRes = DaysB >= DaysA
print(SubsetRes)
print(SupersetRes)

Output

执行上述代码后,将生成以下结果 −

True
True