9.Python3集合(set)增删改查和推导式

今天我们来总结python常用数据类型,集合的基本操作:增删改查

目录

一、集合(set)

集合的三大特点:

创建集合的两种方式:

增加元素

删除元素

查询元素

集合运算(超实用)

二、集合操作速查表


一、集合(set):不重复的无序小仓库

集合的三大特点:

  • 元素不重复:自动去重,省心省力
  • 无序:不能按顺序取,不能索引
  • 元素必须是不可变类型:数字、字符串、元组可以,列表不行

创建集合的两种方式:

  • 花括号法:{元素1, 元素2}
  • set()函数:set()创建空集合,或把其他类型转成集合
python 复制代码
# 方式一:花括号直接创建(重复元素会自动去掉)
fruits = {"苹果", "香蕉", "橙子", "苹果"}
print(fruits)

# 方式二:用set()函数创建空集合
empty_set = set()
print(empty_set, type(empty_set))

# 把列表转成集合,自动去重
numbers = [1, 2, 2, 3, 3, 3, 4]
unique_numbers = set(numbers)
print(unique_numbers)

关键点 :空集合必须用set(),用{}创建的是空字典,这个坑别踩!

增加元素

  • add(元素):加一个元素
  • update(可迭代对象):加多个元素
python 复制代码
s = {"Python", "Java"}
# add()只能加单个元素
s.add("Go")
print(s) # 输出:{'Python', 'Java', 'Go'}

# update()可以加多个元素
s.update(["C++", "JavaScript"])
print(s)  # 输出: {'Python', 'Java', 'Go', 'C++', 'JavaScript'}

关键 :++可迭代对象++就是可以逐一遍历其元素的数据结构(是可以用在for循环中的任何对象------字符串,元组,列表。集合),set.update()方法可以将这些对象中的每个元素都添加到集合中

删除元素

  • remove(元素):删除指定元素,不存在会报错(不推荐)
  • discard(元素):删除指定元素,不存在也不报错(推荐)
  • pop():随机删一个并返回它
  • clear():清空集合
python 复制代码
s = {"Python", "Java", "Go", "C++"}

# remove():元素不存在会报错
s.remove("Java")
print(s)  # 输出:{'Python', 'C++', 'Go'}

# discard():元素不存在也不报错,更安全
s.discard("Go")
s.discard("不存在的")  # 不会报错
print(s) # 输出:{'Python', 'C++'}

# pop():随机删除一个
removed = s.pop()
print(f"被删掉的是:{removed}") # 输出:被删掉的是:Python
print(f"剩下:{s}") # 输出:剩下:{'C++'}

# clear():全部清空
s.clear()
print(f"清空后:{s}") # 输出:清空后:set()

关键优先用discard(),比remove()安全一万倍!pop()随机删,clear()一键清空

查询元素

  • 元素 in 集合:判断是否存在,存在返回True
  • 元素 not in 集合:判断是否不存在,不存在返回True
python 复制代码
s = {"Python", "Java", "Go"}

# in判断是否存在
print("Python" in s)      # 在集合里    True
print("JavaScript" in s)  # 不在集合里   False

# not in判断不存在
print("JavaScript" not in s)  # True

关键:集合的in查询速度比列表快得多,数据量越大优势越明显

集合运算(超实用)

方法列举

  • 集合1 | 集合2:并集(所有元素)
  • 集合1 & 集合2:交集(共同元素)
  • 集合1 - 集合2:差集(只在集合1里的)
  • 集合1 ^ 集合2:对称差集(只在一个集合里的)
python 复制代码
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

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

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

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

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

关键点:集合运算在数据处理中经常用到,比如找共同用户、不同标签等


二、集合操作速查表

|----------|----------------|-----------------------|-------------------------|-----------------|
| 操作类型 | 方法/语法 | 示例代码 | 输出结果 | 注意事项 |
| 创建 | 花括号 | {"a","b"} | {'a','b'} | 空集合用set() |
| | set()转换 | set([1,2,2]) | {1,2} | 自动去重 |
| 增加 | add() | s.add("c") | {'a','b','c'} | 只能加一个元素 |
| | update() | s.update(["d","e"]) | {'a','b','c','d','e'} | 可加多个 |
| 删除 | discard() | s.discard("a") | {'b','c'} | 推荐!安全 |
| | remove() | s.remove("b") | {'c'} | 不存在会报错 |
| | pop() | s.pop() | 随机删一个 | 返回被删元素 |
| 查询 | in | "c" in s | True/False | 比列表快得多 |
| 运算 | 并集 | | {1}|{2} | {1,2} | 合并元素 |
| | 交集 & | {1,2} & {2,3} | {2} | 共同元素 |
| | 差集 - | {1,2} - {2,3} | {1} | 只在第一个集合 |
| | 对称差集 ^ | {1,2} ^ {2,3} | {1,3} | 只在一个集合 |

相关推荐
sg_knight2 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
爱笑的眼睛112 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
程序喵大人2 小时前
推荐个 C++ 练习平台
开发语言·c++·工具推荐
全靠bug跑2 小时前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
阿里嘎多学长2 小时前
2025-12-16 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Evan芙3 小时前
搭建nexus服务,实现本地仓库、代理仓库
java·nginx·tomcat
乂爻yiyao3 小时前
Java LTS版本重要升级特性对照表
java·开发语言
原来是好奇心3 小时前
深入Spring Boot源码(六):Actuator端点与监控机制深度解析
java·开发语言·源码·springboot