Python - 集合
从数学上讲,集合是没有任何特定顺序的项目集合。 一个 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)
输出
当执行上面的代码时,它会产生以下结果。 请注意结果只有一个“wed”。
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)
输出
当执行上面的代码时,它会产生以下结果。 请注意结果只有一个“wed”。
set(['Wed'])
集合的差集
对两个集合进行差分运算会产生一个新集合,该新集合仅包含第一个集合中的元素,而第二个集合中不包含任何元素。 在下面的示例中,元素"Wed"存在于两个集合中,因此不会在结果集中找到它。
示例
DaysA = set(["Mon","Tue","Wed"]) DaysB = set(["Wed","Thu","Fri","Sat","Sun"]) AllDays = DaysA - DaysB print(AllDays)
输出
当执行上面的代码时,它会产生以下结果。 请注意结果只有一个“wed”。
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