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} | 只在一个集合 |

相关推荐
Maynor99611 分钟前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
aini_lovee12 分钟前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
堕27416 分钟前
java数据结构当中的《排序》(一 )
java·数据结构·排序算法
R1nG86325 分钟前
多线程安全设计 CANN Runtime关键数据结构的锁优化
开发语言·cann
初次见面我叫泰隆25 分钟前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓30 分钟前
[Class的应用]获取类的信息
java·开发语言
开开心心就好38 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied42 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
80530单词突击赢1 小时前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
3GPP仿真实验室1 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd