目录

  1. 引言
  2. 集合概述
  3. 集合操作
  4. 集合与列表、字典的对比
  5. 完整示例
  6. 结论
  7. 参考资料

1. 引言

集合(set)是 Python 3 中的一种无序不可重复的数据结构,主要用于去重和集合运算(如交集、并集、差集等)。集合的存储方式基于哈希表,因此查找速度非常快。

本教程将详细介绍集合的定义、操作方法及应用场景,帮助您更好地理解其特性和使用方式。


2. 集合概述

2.1 定义与特性

  • 定义:集合是一个无序可变的数据结构,元素唯一,使用大括号 {}set() 进行定义。
  • 特性
    • 无序:元素没有固定的存储顺序。
    • 唯一:集合内的元素不允许重复。
    • 可变:集合本身可变,但集合中的元素必须是不可变类型(如整数、字符串、元组)。
    • 高效:基于哈希表实现,查询速度快。

深入了解 Python 集合(Python 官方文档)

示例

1
2
fruits = {"apple", "banana", "cherry"}
print(fruits)  # 输出: {'banana', 'apple', 'cherry'}

2.2 创建集合

方式示例说明
直接创建{"a", "b", "c"}手动定义元素
set()set(["a", "b", "c"])从可迭代对象创建
空集合set()注意 {} 创建的是空字典
1
2
3
4
5
6
7
8
# 创建集合
s1 = {1, 2, 3}  # 直接创建
s2 = set("hello")  # 从字符串创建
s3 = set([1, 2, 3, 3, 2, 1])  # 从列表创建(自动去重)
s4 = set()  # 创建空集合
 
print(s1, s2, s3, s4) 
# 可能输出: {1, 2, 3} {'h', 'e', 'l', 'o'} {1, 2, 3} set()

3. 集合操作

3.1 基本操作

操作说明示例
获取长度len(set)len({1, 2, 3}) → 3
添加元素set.add(value)s.add(4)
删除元素set.remove(value)s.remove(2)
安全删除set.discard(value)s.discard(5)(不存在时不会报错)
清空集合set.clear()s.clear()

更多 Python 集合操作(Real Python 教程)

1
2
3
4
5
s = {1, 2, 3}
s.add(4)  # 添加元素
s.remove(2)  # 删除元素
s.discard(5)  # 安全删除(不会报错)
print(s)  # 输出: {1, 3, 4}

3.2 集合方法

方法说明示例
add()添加元素s.add(5)
remove()删除元素,若不存在会报错s.remove(2)
discard()删除元素,若不存在不会报错s.discard(5)
pop()随机删除并返回一个元素s.pop()
clear()清空集合s.clear()

3.3 集合运算

操作说明示例
并集 (``)合并两个集合
交集 (&)取公共元素{1, 2} & {2, 3} → {2}
差集 (-)取 A 不在 B 中的元素{1, 2} - {2, 3} → {1}
对称差集 (^)取 A 和 B 的非公共元素{1, 2} ^ {2, 3} → {1, 3}
1
2
3
4
5
6
7
a = {1, 2, 3}
b = {2, 3, 4}
 
print(a | b)  # 并集: {1, 2, 3, 4}
print(a & b)  # 交集: {2, 3}
print(a - b)  # 差集: {1}
print(a ^ b)  # 对称差集: {1, 4}

4. 集合与列表、字典的对比

特性集合 (set)列表 (list)字典 (dict)
结构无序唯一元素有序可重复元素键值对存储
访问方式通过元素查找通过索引查找通过键查找
可变性可变可变可变
查找效率O(1)O(n)O(1)
适用场景去重、集合运算有序存储键值映射

站内推荐:Python 字典教程


5. 完整示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建集合
numbers = {1, 2, 3, 4}
letters = set("hello")
 
# 集合运算
union_set = numbers | {3, 4, 5}
intersection_set = numbers & {2, 3, 6}
difference_set = numbers - {1, 4}
symmetric_diff_set = numbers ^ {1, 4, 5}
 
# 输出结果
print("Original:", numbers)
print("Union:", union_set)
print("Intersection:", intersection_set)
print("Difference:", difference_set)
print("Symmetric Difference:", symmetric_diff_set)

6. 结论

Python 3 的集合是高效灵活的数据结构,适用于去重和集合运算。它基于哈希表,查询速度快,但不支持索引访问。掌握集合后,您可以在数据处理中提高代码效率,避免重复元素带来的问题。

深入了解 Python 集合(W3Schools 教程)


7. 参考资料

  1. Python 官方文档https://docs.python.org/3/library/stdtypes.html#set
  2. Real Python – 集合教程https://realpython.com/python-sets/
  3. W3Schools – Python 集合https://www.w3schools.com/python/python_sets.asp
  4. GeeksForGeeks – Python Sethttps://www.geeksforgeeks.org/python-set/

站内链接: