Python Set集合详解:创建、操作与不可变类型
本文详细介绍Python中set集合的定义、创建方式及常用操作方法。涵盖add、remove、pop等元素管理函数,以及difference、intersection、union等集合运算方法。同时讲解frozenset不可变集合的特性,帮助开发者掌握集合在去重和数学运算中的应用。
一、set 集合
集合(set)是Python内置的一种无序且不包含重复元素的数据序列。
可以通过大括号 {} 或 set() 函数来创建集合。需要注意的是,若要创建一个空集合,必须使用 set(),因为 { } 在Python中用于创建空字典。
二、创建集合
print({"1", "2", "3"}) # {'2', '3', '1'}
print(set("123")) # {'2', '3', '1'}
print(set((1, 2, 3))) # {1, 2, 3}
print(set([11,22,33])) # {33, 11, 22}
add
用于向集合中添加单个元素。
s1 = {"1", "2", "3"}
s1.add("4")
print(s1) # {'1', '4', '3', '2'}
s1.add("abc")
print(s1) # {'abc', '1', '4', '2', '3'}
clear
用于清空集合中的所有元素,使集合变为空集合。
s1 = {"1", "2", "3"}
s1.clear()
print(s1) # set()
discard
从集合中移除指定的元素。如果该元素不存在于集合中,则不执行任何操作且不会报错。
s1 = {"1", "2", "3"}
print(s1.discard("4")) # None
print(s1) # {'2', '1', '3'}
print(s1.discard("1")) # None
print(s1) # {'2', '3'}
remove
用于移除集合中指定的元素。若指定元素不存在,则会抛出 KeyError 异常。
s1 = {"a", "c", "3"}
s1.remove("a")
print(s1) # {'3', 'c'}
pop
随机返回并移除集合中的一个元素。如果集合为空,则抛出 KeyError 异常。
s1 = {"a", "c", "3"}
print(s1.pop()) # 3
update
使用另一个集合的元素更新当前集合,即取两个集合的并集并更新到自身。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.update(s2)
print(s1) # {'1', 'c', 'a', '3', '2'}
copy
对集合进行浅拷贝,返回一个与原集合内容相同的新集合。
s1 = {"1", "2", "3"}
s2 = s1.copy()
print(s2) # {'2', '1', '3'}
difference
计算差集,返回存在于当前集合但不存在于另一个集合中的元素,原集合保持不变。
s1 = {"1", "2", "3"}
s2 = {"1", "2", "4"}
print(s1.difference(s2)) # {'3'}
print("差集:", s1-s2) # 差集: {'3'}
difference_update
从当前集合中移除与另一个集合共有的元素,即更新当前集合为差集。
s1 = {"1", "2", "3"}
s2 = {"1", "2", "4"}
s1.difference_update(s2)
print(s1) # {'3'}
intersection
计算交集,返回两个集合中共有的元素。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.intersection(s2)
print(s3)
print("交集:", s1 & s2) # {'2'}
intersection_update
根据与另一个集合的交集来更新当前集合,移除不在交集中的元素。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.intersection_update(s2)
print(s1) # {'2'}
isdisjoint
判断两个集合是否没有共同元素。如果交集为空,返回 True,否则返回 False。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = {"a", "b", "c"}
print(s1.isdisjoint(s2)) # False
print(s1.isdisjoint(s3)) # True
issubset
判断当前集合是否为另一个集合的子集。
s1 = {"a", "c", "3"}
s2 = {"a", "c"}
print(s1.issubset(s2)) # False
print(s2.issubset(s1)) # True
issuperset
判断当前集合是否包含另一个集合的所有元素,即是否为另一个集合的超集。
s1 = {"a", "c", "3"}
s2 = {"a", "c"}
print(s1.issuperset(s2)) # True
print(s2.issuperset(s1)) # False
symmetric_difference
计算对称差集,返回两个集合中不共有的元素合集(即只属于其中一个集合的元素)。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.symmetric_difference(s2)
print(s3) # {'1', 'a', 'c', '3'}
print("交叉补集:", s1 ^ s2) # {'1', 'c', '3', 'a'}
symmetric_difference_update
计算两个集合的对称差集,并用结果更新当前集合。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s1.symmetric_difference_update(s2)
print(s1) # {'a', '3', 'c', '1'}
union
计算合集,返回包含两个集合所有元素的集合。
s1 = {"1", "2", "3"}
s2 = {"a", "2", "c"}
s3 = s1.union(s2)
print(s3) # {'a', '1', 'c', '3', '2'}
print("合集:", s1 | s2) # {'3', '2', 'c', '1', 'a'}
不可变集合 frozenset
fs = frozenset("python")
print(fs) # frozenset({'o', 'n', 'y', 'h', 'p', 't'})
到此这篇关于python基础之set集合详解的文章就介绍到这了,更多相关python的set集合内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









