Python容器 - Set

常用操作

set的元素不能重复 

 

set1 = {1, 2, 3}
print(type(set1))  # <class 'set'>
print(len(set1))  # 3

# 添加
set1.add(4)
print(len(set1))  # 4

# 判断是否在集合中
print(1 in set1)  # True
print(5 in set1)  # False

# 删除
set1.remove(4)
# set1.remove(5) # 如果元素不存在, 会抛异常
set1.discard(5)  # 元素不存在, 不会抛异常
set1.pop()  # 随机删除一个元素
print(set1)

# 添加另一个集合
set2 = set([1, 2, 3, 4, 5, 6])
set1.update(set2)
print(set1)

# 遍历
for e in set1:
    print(e)

 

交集

set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}
set3 = {3}

# 交集, 生成新的Set
set5 = set1.intersection(set2)
print(set5)  # {2, 3}

# 交集, 操作符重载方式
set5 = set1 & set2
print(set5)  # {2, 3}

# 并集, 生成新的Set
set5 = set1.intersection(set3)
print(set5)  # {3}


# 交集, 直接修改set1
set1.intersection_update(set2)
print(set1)  # {2, 3}

# 交集, 直接修改set1
set1.intersection_update(set3)
print(set1)  # {3}

 

并集,差集

set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}
set3 = {3}

# 并集, 生成新的Set
set5 = set1.union(set2)
print(set5)  # {1, 2, 3, 4, 5}

# 并集, 操作符重载方式
set5 = set1 | set2
print(set5)  # {1, 2, 3, 4, 5}


# 差集, 生成新的Set
set5 = set1.difference(set2)

print(set5)  # {1}
# 差集, 操作符重载方式
set5 = set1 - set2
print(set5)  # {1}

# 差集, 直接修改set1方式
set1.difference_update(set2)
print(set1)  # {1}

 

集合间的不同元素

set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}
set3 = {3}

# 所有不同元素, 生成新Set
set5 = set1.symmetric_difference(set2)
print(set5)  # {1, 4, 5}

# 所有不同元素, 操作符重载方式
set5 = set1 ^ set2
print(set5)  # {1, 4, 5}

# 所有不同元素, 直接修改set1
set1.symmetric_difference_update(set2)
print(set1)  # {1, 4, 5}

 

判断

set1 = {1, 2, 3}
set2 = {2, 3, 4, 5}
set3 = {3}

# 是否子集
print(set3.issubset(set1))  # True
print(set2.issubset(set1))  # False

# 是否超集
print(set3.issuperset(set1))  # False
print(set2.issuperset(set1))  # False
print(set1.issuperset(set3))  # True

# 是否不包含有相同元素
print(set1.isdisjoint(set2))  # False
print(set2.isdisjoint(set3))  # False
print(set1.isdisjoint({4, 5, 6}))  # True

 

posted @ 2023-07-21 00:33  yanghui01  阅读(7)  评论(0)    收藏  举报