Sets
优质
小牛编辑
139浏览
2023-12-01
数学上,集合是不按任何特定顺序排列的项目集合。 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'])
比较集
我们可以检查给定集合是否是另一个集合的子集或超集。 结果为True或False,具体取决于集合中存在的元素。
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