跳转至

Python集合完整学习指南

1. 什么是集合?想象一下...

想象你有一个神奇的收藏盒!这个收藏盒有些特别: - 每个宝贝都是独一无二的(不能重复) - 宝贝们不在乎放在哪个位置(无序) - 可以随时添加新的宝贝(但不能重复) - 可以快速检查某个宝贝是否在盒子里 - 可以和其他收藏盒比较、合并

在Python中,我们把这个神奇的收藏盒叫做"集合"(Set)!

2. 基本操作

2.1. 创建集合

# 直接创建集合
fruits = {"苹果", "香蕉", "橙子"}

# 从列表创建集合(自动去重)
numbers = set([1, 2, 2, 3, 3, 4])    # 结果是{1, 2, 3, 4}

# 创建空集合(不能用{},那是空字典)
empty_set = set()

2.2. 添加元素

fruits = {"苹果", "香蕉"}

# 添加单个元素
fruits.add("橙子")

# 添加多个元素
fruits.update(["草莓", "葡萄"])

2.3. 删除元素

# 删除指定元素(元素不存在会报错)
fruits.remove("香蕉")

# 安全删除(元素不存在不会报错)
fruits.discard("梨子")

# 随机删除并返回一个元素
random_fruit = fruits.pop()

# 清空集合
fruits.clear()

3. 集合运算

3.1. 基本集合运算

set1 = {"苹果", "香蕉", "橙子"}
set2 = {"香蕉", "葡萄", "草莓"}

# 并集(所有不重复的元素)
union_set = set1 | set2      # 或使用 set1.union(set2)

# 交集(共同的元素)
intersection_set = set1 & set2    # 或使用 set1.intersection(set2)

# 差集(set1有但set2没有的)
difference_set = set1 - set2      # 或使用 set1.difference(set2)

# 对称差集(不同时存在于两个集合中的元素)
symmetric_diff = set1 ^ set2      # 或使用 set1.symmetric_difference(set2)

3.2. 集合关系判断

# 子集判断
small_set = {"苹果", "香蕉"}
is_subset = small_set <= set1     # True

# 超集判断
is_superset = set1 >= small_set   # True

# 相等判断
is_equal = set1 == set2          # False

# 不相交判断
is_disjoint = set1.isdisjoint(set2)   # 如果没有共同元素则为True

3.3. 集合推导式

# 创建1-5的平方数集合
squares = {x**2 for x in range(1, 6)}    # {1, 4, 9, 16, 25}

# 创建所有元音字母集合
vowels = {char for char in 'hello world' if char in 'aeiou'}

4.实战示例

4.1. 标签系统

# 用户标签管理
user_tags = {
    "user1": {"python", "web", "数据库"},
    "user2": {"python", "人工智能", "机器学习"},
    "user3": {"web", "前端", "设计"}
}

# 找出共同兴趣
def find_common_interests(user1, user2):
    return user_tags[user1] & user_tags[user2]

# 找出所有技能
def get_all_skills():
    all_skills = set()
    for tags in user_tags.values():
        all_skills.update(tags)
    return all_skills

print(find_common_interests("user1", "user2"))  # {'python'}
print(get_all_skills())  # 所有不重复的技能

4.2. 数据去重系统

# 访问记录去重
def unique_visitors(log_entries):
    visitors = set()
    for entry in log_entries:
        visitors.add(entry["user_id"])
    return len(visitors)

# 示例使用
logs = [
    {"user_id": "001", "page": "/home"},
    {"user_id": "002", "page": "/about"},
    {"user_id": "001", "page": "/contact"}
]

unique_count = unique_visitors(logs)
print(f"独立访客数:{unique_count}")  # 输出:2

5. 应用场景

5.1. 数据去重

  • 用户ID去重
  • 日志记录去重
  • 关键词提取

5.2. 成员资格测试

  • 权限验证
  • 黑白名单
  • 有效值检查

5.3. 集合运算

  • 共同好友查找
  • 标签匹配
  • 数据比对

6. 小练习

  1. 创建两个集合,分别包含五个数字,然后计算它们的交集、并集和差集
  2. 编写一个函数,接受一个字符串,返回其中所有不重复的字符集合
  3. 实现一个简单的标签推荐系统,基于用户已有标签推荐相关标签

7. 交互式练习工具

👉 点击这里开始Python集合交互式练习

8. 进一步学习