欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Python 教程:Python 中的集合及其对集合的所有操作

最编程 2024-10-19 07:14:36
...

**集合(set)**是 Python 中的一种无序、不重复的元素集合。集合与列表和元组不同,它不允许重复元素,并且元素没有顺序。集合非常适合用于去重操作或进行集合运算(如并集、交集、差集等)。集合使用花括号 {}set() 函数来创建。

集合的创建

  1. 空集合
    使用 set() 函数创建一个空集合,注意不能用 {},因为 {} 创建的是空字典。

    empty_set = set()
    
  2. 非空集合
    直接使用花括号 {}set() 创建包含元素的集合。

    my_set = {1, 2, 3, 4}
    another_set = set([1, 2, 3])
    

集合的常用操作

  1. 添加元素
    使用 add() 方法向集合中添加元素。如果元素已存在,集合不做任何改变。

    my_set = {1, 2, 3}
    my_set.add(4)  # 添加新元素
    my_set.add(3)  # 元素已存在,不做任何改变
    print(my_set)  # 输出:{1, 2, 3, 4}
    
  2. 移除元素

    • remove():移除指定元素,如果元素不存在则会抛出 KeyError
    • discard():移除指定元素,如果元素不存在也不会抛出错误。
    • pop():随机移除并返回一个元素,集合是无序的,所以无法指定移除哪个元素。
    my_set = {1, 2, 3, 4}
    my_set.remove(2)  # 移除元素 2
    my_set.discard(5)  # 尝试移除不存在的元素,不会抛错
    popped_element = my_set.pop()  # 随机移除一个元素
    print(my_set)  # 输出:剩下的元素
    
  3. 集合运算
    集合支持多种数学集合运算,如并集、交集、差集、对称差集等。

    • 并集(Union):将两个集合的所有元素合并,去除重复项,使用 |union()
    • 交集(Intersection):返回两个集合中都存在的元素,使用 &intersection()
    • 差集(Difference):返回在第一个集合但不在第二个集合中的元素,使用 -difference()
    • 对称差集(Symmetric Difference):返回两个集合中不重复的元素,使用 ^symmetric_difference()
    set_a = {1, 2, 3, 4}
    set_b = {3, 4, 5, 6}
    
    # 并集
    print(set_a | set_b)  # 输出:{1, 2, 3, 4, 5, 6}
    print(set_a.union(set_b))  # 输出:{1, 2, 3, 4, 5, 6}
    
    # 交集
    print(set_a & set_b)  # 输出:{3, 4}
    print(set_a.intersection(set_b))  # 输出:{3, 4}
    
    # 差集
    print(set_a - set_b)  # 输出:{1, 2}
    print(set_a.difference(set_b))  # 输出:{1, 2}
    
    # 对称差集
    print(set_a ^ set_b)  # 输出:{1, 2, 5, 6}
    print(set_a.symmetric_difference(set_b))  # 输出:{1, 2, 5, 6}
    
  4. 子集和超集

    • issubset():判断集合是否为另一个集合的子集。
    • issuperset():判断集合是否为另一个集合的超集。
    set_a = {1, 2}
    set_b = {1, 2, 3, 4}
    
    print(set_a.issubset(set_b))  # 输出:True
    print(set_b.issuperset(set_a))  # 输出:True
    
  5. 集合的长度
    使用 len() 获取集合中的元素个数。

    my_set = {1, 2, 3}
    print(len(my_set))  # 输出:3
    
  6. 清空集合
    使用 clear() 方法可以清空集合中的所有元素。

    my_set = {1, 2, 3}
    my_set.clear()
    print(my_set)  # 输出:set()
    
  7. 遍历集合
    可以使用 for 循环遍历集合中的元素。

    my_set = {1, 2, 3}
    for item in my_set:
        print(item)
    
  8. 冻结集合
    冻结集合(frozenset)是一种不可变的集合,创建后无法修改(类似于元组对于列表的不可变性)。使用 frozenset() 函数来创建。

    frozen_set = frozenset([1, 2, 3])
    # frozen_set.add(4)  # 会引发错误:AttributeError: 'frozenset' object has no attribute 'add'
    print(frozen_set)  # 输出:frozenset({1, 2, 3})
    

完整示例

# 创建集合
my_set = {1, 2, 3, 4, 5}

# 添加元素
my_set.add(6)

# 移除元素
my_set.remove(2)

# 集合运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print(set_a | set_b)  # 并集
print(set_a & set_b)  # 交集
print(set_a - set_b)  # 差集
print(set_a ^ set_b)  # 对称差集

# 判断子集和超集
print(set_a.issubset(set_b))  # False
print(set_a.issuperset({1}))  # True

# 清空集合
my_set.clear()
print(my_set)  # 输出:set()

# 冻结集合
frozen = frozenset([1, 2, 3])
print(frozen)

总结

集合在 Python 中是一种强大的数据结构,特别适合处理无序且唯一的元素集。它提供了丰富的集合运算(如并集、交集、差集等),并且通过集合,可以方便地去除重复元素或执行集合之间的运算。同时,集合的不可变版本 frozenset 也适用于那些需要不可变数据结构的场景。

推荐阅读