📜  Python集

📅  最后修改于: 2020-11-07 08:35:05             🧑  作者: Mango


从数学上讲,集合是指不是按特定顺序排列的项目集合。 Python集与此数学定义类似,但具有以下附加条件。

  • 集合中的元素不能重复。
  • 集合中的元素是不可变的(无法修改),但是集合作为一个整体是可变的。
  • Python集中的任何元素都没有附加索引。因此,它们不支持任何索引或切片操作。

设定作业

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

创建一个集合

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

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

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

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

访问集合中的值

我们无法访问集合中的单个值。如上所述,我们只能一起访问所有元素。但是我们也可以通过遍历集合来获得单个元素的列表。

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
 
for d in Days:
    print(d)

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

Wed
Sun
Fri
Tue
Mon
Thu
Sat

将项目添加到集合

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

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

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

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

从集合中删除项目

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

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

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

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

集联合

对两个集合的并集操作将产生一个新集合,其中包含两个集合中所有不同的元素。在下面的示例中,两个集合中都存在元素“ Wed”。

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

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

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

集的交集

在两个集合上进行相交运算会生成一个新集合,该集合仅包含两个集合中的公共元素。在下面的示例中,两个集合中都存在元素“ Wed”。

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

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

set(['Wed'])
 

集的差异

对两个集合进行差分运算将生成一个新集合,该集合仅包含第一个集合中的元素,而第二个集合中没有元素。在下面的示例中,两个集合中都存在元素“ Wed”,因此在结果集中将找不到该元素。

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

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

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

比较集

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

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

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

True
True