08 - 集合set:去重和快速查找

想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:https://github.com/tingaicompass/AI-Compass

仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。

08 - 集合set:去重和快速查找

学习目标: 掌握集合的创建和应用


💻 代码示例

1. 创建集合

python 复制代码
# 方法1:花括号
s = {1, 2, 3, 4, 5}
print(s)  # {1, 2, 3, 4, 5}

# 方法2:set()函数
s = set([1, 2, 2, 3, 3, 3])  # 自动去重
print(s)  # {1, 2, 3}

# 空集合(⚠️ 不能用{},那是空字典)
empty = set()

# 从字符串创建
chars = set("hello")
print(chars)  # {'h', 'e', 'l', 'o'}

2. 集合操作

python 复制代码
s = {1, 2, 3}

# 添加元素
s.add(4)
print(s)  # {1, 2, 3, 4}

# 删除元素
s.remove(2)  # 如果元素不存在会报错
print(s)  # {1, 3, 4}

s.discard(10)  # 元素不存在也不报错

# 检查成员
print(1 in s)   # True
print(10 in s)  # False

# 长度
print(len(s))  # 3

3. 集合运算

python 复制代码
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

# 并集
print(a | b)  # {1, 2, 3, 4, 5, 6}
print(a.union(b))

# 交集
print(a & b)  # {3, 4}
print(a.intersection(b))

# 差集
print(a - b)  # {1, 2}
print(a.difference(b))

# 对称差集
print(a ^ b)  # {1, 2, 5, 6}

🎯 在算法题中的应用

python 复制代码
# 第3课:最长连续序列
def longestConsecutive(nums):
    num_set = set(nums)  # O(1)查找
    longest = 0

    for num in num_set:
        # 只从序列起点开始
        if num - 1 not in num_set:
            current = num
            length = 1

            while current + 1 in num_set:
                current += 1
                length += 1

            longest = max(longest, length)

    return longest

# 去重
nums = [1, 2, 2, 3, 3, 3]
unique = list(set(nums))  # [1, 2, 3]

🎓 小结

✅ {1, 2, 3} 创建集合

✅ s.add(x) 添加元素

✅ x in s O(1)查找

✅ | & - ^ 集合运算

✅ 自动去重

核心优势: O(1)查找,类似字典但只存值不存键值对

下一步 : 09-字符串str.md


如果这篇内容对你有帮助,推荐收藏 AI Compass:https://github.com/tingaicompass/AI-Compass

更多系统化题解、编程基础和 AI 学习资料都在这里,后续复习和拓展会更省时间。

相关推荐
骑着蜗牛撵大象32718 分钟前
558 万美元训出 671B 模型:DeepSeek-V3 算法与系统的协同拆解
分布式·算法·moe·deepseek-v3·mla·fp8训练
Eyfcom20 分钟前
〖阶段性回顾〗物流系统架构与算法的 Day 1-5 知识图谱与实战答疑
算法·系统架构·知识图谱·物流管理系统·快递管理系统
xunberg25 分钟前
【Agent 生产化手记-02】Agent 怎么向人提问
人工智能·算法·架构
海绵宝宝转agent31 分钟前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
pjj198541 小时前
YOLO 目标检测算法系列梳理:从 V1 到 V5 的原理演进
算法·yolo·目标检测
二十七日秋1 小时前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
晚风叙码2 小时前
Linux 进程概念(下):程序地址空间与虚拟内存
linux·服务器·算法
geovindu2 小时前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
silvamux_2 小时前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
重生之小比特2 小时前
【算法拾光】前缀和|连续的子数组和 + 和相同的二元子数组
算法·leetcode·哈希算法