Skip to content

Python 集合 (Set)

集合是 Python 中另一种重要的数据类型。它是一个无序不包含重复元素的集合。集合的主要用途是进行成员资格测试和消除重复条目。

创建集合

集合由大括号 {} 定义,或者使用 set() 构造函数。

python
# 使用大括号创建集合
fruits = {"apple", "banana", "cherry"}
print(fruits)

# 使用 set() 构造函数从列表创建集合
# 注意:重复的元素会被自动移除
numbers_list = [1, 2, 2, 3, 4, 4, 4]
numbers_set = set(numbers_list)
print(numbers_set)  # 输出: {1, 2, 3, 4}

# 从字符串创建集合
char_set = set("hello world")
print(char_set) # 输出: {'o', 'd', 'l', 'h', ' ', 'w', 'r', 'e'}

注意:创建空集合

你不能使用 {} 来创建一个空集合,因为这会创建一个空字典。要创建一个空集合,你必须使用 set()

python
empty_dict = {}
empty_set = set()

print(type(empty_dict)) # 输出: <class 'dict'>
print(type(empty_set))  # 输出: <class 'set'>

集合的特性

  1. 无序性: 集合中的元素没有特定的顺序。你不能通过索引来访问集合中的元素(例如 my_set[0] 会引发错误)。
  2. 唯一性: 集合中不能包含重复的元素。这是集合最核心的特性。
  3. 可变性: 集合本身是可变的,你可以向其中添加或删除元素。

常用集合方法

  • set.add(elem): 向集合中添加一个元素。
  • set.update(iterable): 用另一个可迭代对象中的所有元素来更新集合。
  • set.remove(elem): 从集合中移除一个元素。如果元素不存在,会引发 KeyError
  • set.discard(elem): 从集合中移除一个元素。如果元素不存在,不会引发错误。
  • set.pop(): 随机移除并返回集合中的一个元素。如果集合为空,会引发 KeyError
  • set.clear(): 清空集合中的所有元素。

示例:

python
my_set = {1, 2, 3}

my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}

my_set.update([4, 5, 6])
print(my_set) # 输出: {1, 2, 3, 4, 5, 6}

my_set.remove(1)
print(my_set) # 输出: {2, 3, 4, 5, 6}

my_set.discard(10) # 元素10不存在,但不会报错
print(my_set)

集合运算

集合最强大的功能在于其数学运算,可以用来比较两个集合的关系。

假设我们有两个集合:

python
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
  • 并集 (Union): 返回一个包含两个集合中所有元素的新集合。

    • A | B
    • A.union(B)
    • 结果: {1, 2, 3, 4, 5, 6}
  • 交集 (Intersection): 返回一个只包含两个集合中共有元素的新集合。

    • A & B
    • A.intersection(B)
    • 结果: {3, 4}
  • 差集 (Difference): 返回一个包含在第一个集合中,但不在第二个集合中的元素的新集合。

    • A - B (A 中有,B 中没有)
    • A.difference(B)
    • 结果: {1, 2}
  • 对称差集 (Symmetric Difference): 返回一个包含所有只在其中一个集合中出现的元素的新集合(即,并集减去交集)。

    • A ^ B
    • A.symmetric_difference(B)
    • 结果: {1, 2, 5, 6}

示例:

python
print(f"并集: {A | B}")
print(f"交集: {A & B}")
print(f"差集 (A-B): {A - B}")
print(f"对称差集: {A ^ B}")

本站内容仅供学习和研究使用。