当前位置: 首页 > web >正文

[python] set

1.添加元素

在 Python 中,向 set 添加一个元素可以使用 add() 方法。如果添加的元素已经存在于 set 中,add() 不会重复添加(因为 set 具有自动去重的特性)。

  • 方法 1:add(element)(添加单个元素)
my_set = {1, 2, 3}
my_set.add(4)   # 添加元素 4
print(my_set)   # 输出: {1, 2, 3, 4}
my_set.add(2)   # 尝试添加已存在的元素 2
print(my_set)   # 输出: {1, 2, 3, 4}(不会重复添加)
  • 方法 2:update(iterable)(添加多个元素)如果要从 可迭代对象(如 listtupleset)中添加多个元素,可以使用 update()
my_set = {1, 2, 3}
my_set.update(3, 4, 5)   # 添加列表中的元素(自动去重)
print(my_set)   # 输出: {1, 2, 3, 4, 5} 
  • 方法 3:|= 运算符(合并集合)也可以用 |= 运算符合并另一个 set 或可迭代对象:
my_set = {1, 2, 3}
my_set |= {3, 4, 5}   # 相当于 my_set.update({3, 4, 5})
print(my_set)   # 输出: {1, 2, 3, 4, 5} 

注意事项

    1. set 只能存储 不可变对象(如 intstrtuple),不能直接存储 listdict 等可变对象。
    1. 如果尝试添加可变对象(如 1, 2),会抛出 TypeError: python my_set.add(1, 2) 报错: TypeError: unhashable type: ‘list’ 如果需要存储可变对象,可以改用 frozenset 或转换为 tuple

2.删除元素

2.1删除一个元素

在 Python 中,可以使用 setremove()discard() 方法来删除一个元素。两者的区别在于:

  • remove(element):如果元素存在,则删除;如果元素不存在,会抛出 KeyError 异常。
  • discard(element):如果元素存在,则删除;如果元素不存在,不会报错(静默处理)。 示例代码
my_set = {1, 2, 3, 4, 5} 
# 方法1: remove()
my_set.remove(3)   # 删除元素 3
print(my_set)     # 输出: {1, 2, 4, 5} 如果元素不存在,remove() 会报错
try:    my_set.remove(99)   # KeyError: 99
except KeyError as e:    print(f"Error: {e}") # 方法2: discard()
my_set.discard(2)   # 删除元素 2
print(my_set)       # 输出: {1, 4, 5}
my_set.discard(99)   # 元素不存在,但不会报错
print(my_set)        # 输出: {1, 4, 5} 
  • pop()随机删除一个元素并返回它:
popped_element = my_set.pop()   # 随机删除并返回一个元素
print(f"Popped: {popped_element}, Remaining: {my_set}") 

总结

  • 确定元素存在 → 用 remove()
  • 不确定元素是否存在 → 用 discard()
  • 需要随机删除 → 用 pop()

2.2 删除一组元素

要从 set 中快速删除 list 中的所有元素,可以使用 setdifference_update() 方法,或者直接用 -= 运算符。这两种方法都会直接修改原 set,删除所有在 list 中存在的元素。

  • 方法 1:difference_update()
my_set = {1, 2, 3, 4, 5}
to_remove =[2, 3, 6] # 6 不在 set 中,会被忽略
my_set.difference_update(to_remove)   # 直接修改原 set
print(my_set)   # 输出: {1, 4, 5} 
  • 方法 2:-= 运算符(推荐)
my_set = {1, 2, 3, 4, 5}
to_remove = [2, 3, 6]
my_set -= set(to_remove)   # 相当于 my_set = my_set - set(to_remove)
print(my_set)   # 输出: {1, 4, 5} 
http://www.xdnf.cn/news/947.html

相关文章:

  • JavaScript day5
  • 一文了解相位阵列天线中的真时延
  • 深度学习:人工智能的核心驱动力
  • C语言——数组
  • Sentinel源码—7.参数限流和注解的实现二
  • 字符串拼接问题的最佳解决方案
  • Shell常用功能详细使用
  • STM32 栈地址起始位置不正确
  • 【GIT】为什么要变基下拉,变基下拉失败,提示没有暂存如何解决?
  • 华为OD机试2025A卷七日集训第6期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
  • Transformer系列(三):Transformer架构
  • Spring Boot
  • Batch Size
  • MySQL 按照日期统计记录数量
  • VOS3000内存满了怎么删除,录音格式如何转换呢
  • JVM 内存分布详解
  • 基于Spring Boot+微信小程序的智慧农蔬微团购平台-项目分享
  • 存储器综合:内存条
  • GAIA-2:用于自动驾驶的可控多视图生成世界模型
  • 基于大模型的腹股沟疝全流程预测与诊疗方案研究报告
  • 杭电oj(2031、2033、2070、2071、2075、2089、2090、2092、2096)题解
  • 学习笔记(C++篇)--- Day 3
  • 掌握Go空接口强大用途与隐藏陷阱
  • 14.QT-多元素控件|QListWidget|QTableWidget|QTreeWidget(C++)
  • SpringBoot整合JWT Token:构建安全无状态认证体系的最佳实践
  • QGraphicsItem的shape和boundingRect方法
  • HarmonyOS:Navigation实现导航之页面设置和路由操作
  • 【 Git 全局忽略文件完全指南:配置、规则与最佳实践】
  • 电商数据自动化采集方案:淘宝商品详情 API 接入与数据处理技巧
  • Spring(第一章)