[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.mzph.cn/diannao/79915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一期第18讲26:23

shell脚本以 .sh为后缀,里面存放着一行行要运行的linux指令。 shell脚本第一行一定为 #!/bin/bash,表示使用bash。 shell文件举例如下: #!/bin/bash echo "hello shell!" shell文件默认没有可执行权限,因此 chmod 777 m…

解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题

解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题 在 Ubuntu 上使用 Intel VTune Profiler 时遇到无法收集 CPU 硬件性能计数器数据的问题,通常是由于权限和系统配置问题导致的。以下是解决方案: 1. 检查并加载性能监控模块 首先确保 Linux…

健康元 以韧性换弹性

拼韧性的时候到了! 一面是复杂的市场、政策环境与医药行业转型所叠加形成的向下压力;一面是AI技术深度赋能医药企业创新加速的向上机遇。 中国药企在经历了一轮群体性低潮期后,进入“结构性”分化的阶段。 在这一阶段上,一些财…

csv数据的读取

在地理信息系统(GIS)项目中,CSV(Comma-Separated Values)文件是一种常见的数据格式,用于存储表格数据。CSV 文件因其简单易用、可被多种软件读取而广泛应用于数据交换和存储。ArcPy 提供了强大的功能&#…

android Stagefright框架

作为Android音视频开发人员,学习Stagefright框架需要结合理论、源码分析和实践验证。以下是系统化的学习路径: 1. 基础准备 熟悉Android多媒体体系 掌握MediaPlayer、MediaCodec、MediaExtractor等核心API的用法。 理解Android的OpenMAX IL&#xff08…

【基于WSAAsyncSelec模型的通信程序设计】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 这次实验主要是为了让大家了解基于 WSAAsyncSelect 模型通信程序的编写、编译和执行过程。通过实践操作,深入掌握这种模型在实现计算机之间通信时的应用。 …

JAVA:利用 Apache Tika 提取文件内容的技术指南

1、简述 Apache Tika 是一个强大的工具,用于从各种文件中提取内容和元数据。📄Tika 支持解析文档、📸图像、🎵音频、🎥视频文件以及其他多种格式,非常适合构建🔍搜索引擎、📂内容管理系统和📊数据分析工具。 样例代码:https://gitee.com/lhdxhl/springboot-…

数码管静态显示一位字符(STC89C52单片机)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; //用数组来存储数码管的真值表&#xff0c;数组将在下一章详细介绍 unsigned char code LedChar[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82…

计算机视觉与深度学习 | 工业视觉缺陷检测如何检小缺陷?背景概述,原理,检测难点,常用的检测算法,算法评估指标,新项目算法选择,算法部署

工业视觉小缺陷检测技术解析 背景概述 工业视觉缺陷检测是智能制造中质量控制的核心环节,而小缺陷检测(如微米级划痕、点状污渍、细微裂纹等)因其目标小、易受干扰等特点,成为技术难点。随着制造业对精度要求提升(如3C电子、半导体、精密零部件行业),传统人工目检和基…

OBS 日期时间.毫秒时间脚本 date-and-time.lua

文章目录 OBS 日期时间.毫秒时间脚本&#xff1a;效果 OBS 日期时间.毫秒时间脚本&#xff1a; obs obslua source_name ""last_text "" format_string "" activated false-- 此函数用于获取精确的毫秒级时间戳&#…

进程和线程(1)

前言&#xff1a; 在计算机中cpu就像一座工厂&#xff0c;这个工厂里面有许多的车间&#xff0c;但是假如工厂的电力有限&#xff0c;一次只能供给一个车间使用&#xff0c;也就是说当一个车间在进行工作的时候&#xff0c;其他车间是不能工作的&#xff08;单个cpu只能运行一…

入门-C编程基础部分:16、 预处理器

飞书文档https://x509p6c8to.feishu.cn/wiki/DzSJwsGiTiXkeCkyEYUcuXbKnbf C 预处理是编译过程中一个单独的步骤&#xff0c;是一个文本替换工具而已。所有的预处理命令都是以井号&#xff08;#&#xff09;开头。 指令描述#define定义宏#ifdef如果宏已经定义&#xff0c;则返…

Ubuntu下安装和卸载MySQL

Ubuntu下安装和卸载MySQL 下面的演示系统版本&#xff1a;Ubuntu 24.04 更新系统软件包 在开始安装之前&#xff0c;建议先更新系统的软件包列表&#xff0c;以确保所有依赖项是最新的。 sudo apt update && sudo apt upgrade -y安装MySQL服务器 Ubuntu的官方软件…

【Python爬虫实战篇】--爬取豆瓣电影信息(静态网页)

网站&#xff0c;&#xff1a;豆瓣电影 Top 250 爬取豆瓣前250电影的信息&#xff0c; F12打开网页控制台&#xff0c;查看网页元素&#xff0c; 发现网页数据直接可以查看到&#xff0c;为静态网页数据&#xff0c;较为简单 目录 1.第一步使用urllib库获取网页 2.第二步使…

【Unity知识点详解】Unity中泛型单例的使用,兼容WebGL

今天来讲下Unity中泛型单例的使用&#xff0c;包含普通单例和继承MonoBehaviour的单例。重点是需要两种泛型单例兼容WebGL平台&#xff0c;话不多说直接开始。 泛型单例的设计目标 作为泛型单例&#xff0c;需要实现以下几个目标&#xff1a; 全局唯一&#xff0c;在程序的整个…

Python进程与线程的深度对比

一、核心概念对比 1. 进程&#xff08;Process&#xff09; 操作系统级独立单元&#xff1a;每个进程拥有独立的内存空间&#xff08;堆、栈、代码段&#xff09; 资源隔离性&#xff1a;崩溃不影响其他进程 多核并行&#xff1a;可充分利用多核CPU资源 2. 线程&#xff0…

Django 入门指南:构建强大的 Web 应用程序

什么是 Django&#xff1f; Django 是一个开源的高层次 Python Web 框架&#xff0c;旨在快速开发安全且可维护的网站。它通过简化常见的 Web 开发任务&#xff0c;帮助开发者专注于开发应用的核心功能。Django 实现了“快速开发”和“尽量少的重复”的理念&#xff0c;提供了…

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之IS31FL3216)

目录 ESP-ADF外设子系统深度解析&#xff1a;esp_peripherals组件架构与核心设计&#xff08;显示输出类外设之IS31FL3216&#xff09;简介模块概述功能定义架构位置核心特性 IS31FL3216外设分析IS31FL3216外设概述IS31FL3216外设层次架构图 IS31FL3216外设API和数据结构外设层…

【计算机网络 | 第三篇】常见的网络协议(二)

没有看过我写的关于网络协议的第一篇博客可以看【计算机网络 | 第二篇】常见的通信协议&#xff08;一&#xff09;-CSDN博客 TCP的三次握手和四次挥手 TCP三次握手 三次握手是TCP协议建立可靠连接的过程&#xff0c;目的是确保客户端和服务端双方的双向通信能力正常&#x…

HAL库(STM32CubeMX)——高级ADC学习、HRTIM(STM32G474RBT6)

系列文章目录 文章目录 系列文章目录前言存在的问题HRTIMcubemx配置前言 对cubemx的ADC的设置进行补充 ADCs_Common_Settings Mode:ADC 模式 Independent mod 独立 ADC 模式,当使用一个 ADC 时是独立模式,使用两个 ADC 时是双模式,在双模式下还有很多细分模式可选 ADC_Se…