news 2026/5/1 7:07:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
9.Python3集合(set)增删改查和推导式

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

目录

一、集合(set)

集合的三大特点:

创建集合的两种方式:

增加元素

删除元素

查询元素

集合运算(超实用)

二、集合操作速查表


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

集合的三大特点:

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

创建集合的两种方式:

  • 花括号法:{元素1, 元素2}
  • set()函数:set()创建空集合,或把其他类型转成集合
# 方式一:花括号直接创建(重复元素会自动去掉) 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(可迭代对象):加多个元素
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():清空集合
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
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:对称差集(只在一个集合里的)
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}

只在一个集合

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:51:19

当展厅互动装置 “苏醒”,光影与机械共谱2025深圳河北上海新篇

当你在展厅中迈出一步,面前的装置随之“苏醒”——机械臂开始舞动,光影随你流转,沉默的展品突然开始讲述。这不再是未来构想,而是互动机械装置为展厅带来的当下革命。它正将展览从“请勿触摸”的静态观看,彻底转变为一…

作者头像 李华
网站建设 2026/4/18 23:28:06

NTFS到Btrfs无损转换终极指南:快速安全完成文件系统升级

NTFS到Btrfs无损转换终极指南:快速安全完成文件系统升级 【免费下载链接】ntfs2btrfs 项目地址: https://gitcode.com/gh_mirrors/nt/ntfs2btrfs 对于从Windows转向Linux的用户来说,NTFS到Btrfs的文件系统转换是一个关键步骤。ntfs2btrfs项目提供…

作者头像 李华
网站建设 2026/5/1 7:36:20

测试面试常见问题与回答策略深度解析

一、核心能力考察类问题 1. "请介绍一个你发现过的复杂Bug" 回答框架:情境(STAR原则)技术细节解决价值 示例回答: "在电商项目支付模块测试中,我发现一个订单金额四舍五入导致的资金损失漏洞。当用户购买298.5元商品使用满2…

作者头像 李华
网站建设 2026/5/1 0:43:18

敏捷测试中的迭代质量保障:从过程到文化的全面演进

当测试遇上敏捷在快速迭代的敏捷开发浪潮中,软件测试正经历着从"阶段检查者"到"质量共建者"的角色蜕变。传统的瀑布模型将测试置于开发周期的末端,而敏捷测试则要求质量保障活动深度嵌入每一个迭代周期,形成持续反馈的质…

作者头像 李华
网站建设 2026/4/28 14:21:29

Webpack自定义构建实战:5个突破打包限制的高级配置技巧

Webpack自定义构建实战:5个突破打包限制的高级配置技巧 【免费下载链接】nexe 🎉 create a single executable out of your node.js apps 项目地址: https://gitcode.com/gh_mirrors/ne/nexe 你是否曾经为Webpack打包后的文件体积过大而烦恼&…

作者头像 李华
网站建设 2026/4/22 13:58:28

elsa-core工作流引擎终极指南:从零开始构建自动化流程

elsa-core工作流引擎终极指南:从零开始构建自动化流程 【免费下载链接】elsa-core A .NET workflows library 项目地址: https://gitcode.com/gh_mirrors/el/elsa-core 开启自动化之旅:为什么需要工作流引擎? 在日常开发中&#xff0…

作者头像 李华