[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.pswp.cn/diannao/79915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79915.shtml
英文地址,請注明出處:http://en.pswp.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…