无涯教程-Python - 集合(Sets)

109 阅读3分钟

从数学上讲,集合(Sets)是指不按特定顺序排列的元素集合, 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=DaysA
print(SubsetRes)
print(SupersetRes)

执行以上代码后,将产生以下输出。

True
True

参考链接

www.learnfk.com/python-data…