python 數據類型之集合

常見的數據類型:

  • int,整數類型(整形)
  • bool,布爾類型
  • str,字符串類型
  • list,列表類型
  • tuple,元組類型
  • dict,字典類型,一個容器且元素必須是鍵值對。
  • set,集合類型,一個不允許重復重復 & 可變類型(元素可哈希)。
  • float,浮點類型(浮點型),常見的小數

本節介紹集合

定義

集合(set)是一個 無序 、可變、不允許數據重復的容器。

集合中的元素不會重復,并且可以進行交集、并集、差集等常見的集合操作。

可以使用大括號?{ }?創建集合,元素之間用逗號?,?分隔, 或者也可以使用?set()?函數創建集合。

v1 = { 11, 22, 33, "alex" }
  • 無序,無法通過索引取值。

  • 可變,可以添加和刪除元素。

    v1 = {11,22,33,44}
    v1.add(55)
    print(v1) # {11,22,33,44,55}
  • 不允許數據重復。

    v1 = {11,22,33,44}
    v1.add(22)
    print(v1) # {11,22,33,44}

注意:定義空集合時,只能使用v = set(),不能使用?v={}(這樣是定義一個空字典)。

添加元素

data = {"a", 'b', "c"}
data.add("d")
print(data)

還有一個方法,也可以添加元素,且參數可以是列表,元組,字典等,語法格式如下:

s.update( x )

x 可以有多個,用逗號分開。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6]) ?
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>

集合的元素只能是 int、bool、str、tuple 。?

刪除、移除元素

移除集合中的元素,且如果元素不存在,不會發生錯誤

data = {"a", 'b', "c"}
data.discard("a") 
print(data)
還可以使用remove( x )

將元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") ? # 不存在會發生錯誤
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>

我們也可以設置隨機刪除集合中的一個元素,語法格式如下:

s.pop() 
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()print(x)

多次執行測試結果都不一樣。

set 集合的 pop 方法會對集合進行無序的排列,然后將這個無序排列集合的左面第一個元素進行刪除。

長度

v = {"劉能", "趙四", "尼古拉斯"}
data = len(v)
print(data)

清空

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

判斷元素是否在集合中存在

判斷元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>

for循環

v = {"劉能", "趙四", "尼古拉斯"}
for item in v:print(item)

?交集并(減、&、|)

  1. 減,計算差集

    s1 = {"劉能", "趙四", "???"}
    s2 = {"劉科?", "馮鄉?", "???"}s3 = s1 - s2 
    s4 = s2 - s1
    print(s3)
    print(s4)
  2. &,計算交集

    s1 = {"劉能", "趙四", "???"}
    s2 = {"劉科?", "馮鄉?", "???"}
    s3 = s1 & s2
    print(s3)
  3. |,計算并集

    s1 = {"劉能", "趙四", "???"}
    s2 = {"劉科?", "馮鄉?", "???"}
    s3 = s1 | s2
    print(s3)

轉換

其他類型如果想要轉換為集合類型,可以通過set進行轉換,并且如果數據有重復自動剔除。

提示:int/list/tuple/dict都可以轉換為集合。

v1 = "武沛齊"
v2 = set(v1)
print(v2) # {"武","沛","齊"}
v1 = [11,22,33,11,3,99,22]
v2 = set(v1)
print(v2) # {11,22,33,3,99}
v1 = (11,22,3,11)
v2 = set(v1)
print(v2) # {11,22,3}

提示:這其實也是去重的一個手段。

data = {11,22,33,3,99}v1 = list(data) # [11,22,33,3,99]v2 = tuple(data) # (11,22,33,3,99)

元素必須可哈希

因存儲原理,集合的元素必須是可哈希的值,即:內部通過通過哈希函數把值轉換成一個數字

目前可哈希的數據類型:int、bool、str、tuple,而list、set是不可哈希的。

對比和嵌套

類型是否可變是否有序元素要求是否可哈希轉換定義空
listlist(其他)v=[]或v=list()
tupletuple(其他)v=()或v=tuple()
set可哈希set(其他)v=set()
data_list = ["alex",11,(11, 22, 33, {"alex", "eric"}, 22),[11, 22, 33, 22],{11, 22, (True, ["中國", "北京"], "沙河"), 33}
]

注意:由于True和False本質上存儲的是 1 和 0 ,而集合又不允許重復,所以在整數 0、1和False、True出現在集合中會有如下現象:

v1 = {True, 1}
print(v1)  # {True}v2 = {1, True}
print(v2)  # {1}v3 = {0, False}
print(v3)  # {0}v4 = {False, 0}
print(v4)  # {False}

集合內置方法完整列表


方法?? ?描述
add()?? ?為集合添加元素
clear()?? ?移除集合中的所有元素
copy()?? ?拷貝一個集合
difference()?? ?返回多個集合的差集
difference_update()?? ?移除集合中的元素,該元素在指定的集合也存在。
discard()?? ?刪除集合中指定的元素
intersection()?? ?返回集合的交集
intersection_update()?? ?返回集合的交集。
isdisjoint()?? ?判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。
issubset()?? ?判斷指定集合是否為該方法參數集合的子集。
issuperset()?? ?判斷該方法的參數集合是否為指定集合的子集
pop()?? ?隨機移除元素
remove()?? ?移除指定元素
symmetric_difference()?? ?返回兩個集合中不重復的元素集合。
symmetric_difference_update()?? ?移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。
union()?? ?返回兩個集合的并集
update()?? ?給集合添加元素
len()?? ?計算集合元素個數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164001.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

I Doc View在線文檔預覽系統RCE漏洞(QVD-2023-45061)

0x01 產品簡介 iDocView是一個在線文檔解析應用&#xff0c;旨在提供便捷的文件查看和編輯服務。 0x02 漏洞概述 漏洞成因 本次漏洞出現在在線文檔解析應用中的遠程頁面緩存功能。具體問題在于該應用未能對用戶輸入的URL進行充分的安全驗證&#xff0c;從而導致存在安全隱患…

前端實現菜單快速檢索的功能

前端CSS <style type"text/css">.btn-box {color: #fff;width: auto;border-radius: 25px;min-width: 40px;height: 40px;margin: 9px;line-height: 40px;display: inline-block;position: relative;overflow: hidden;background-image: linear-gradient(315de…

紅隊攻防實戰之內網穿透隱秘隧道搭建

別低頭&#xff0c;皇冠會掉&#xff1b;別流淚&#xff0c;賤人會笑。 本文首發于先知社區&#xff0c;原創作者即是本人 0x00 前言 構建內網隱蔽通道&#xff0c;從而突破各種安全策略限制&#xff0c;實現對目標服務器的完美控制。 當我們從外網成功獲得攻擊點的時候&…

SAP BAPI For LU01/LU04 記賬更改

場景&#xff1a;采購收貨質檢放行的時候&#xff0c;發現存在有些做QA11的時候&#xff0c;進入到TR-ZONE中&#xff0c;沒有進入到指定的倉位 解決方案&#xff1a;前端通過LU04進入&#xff0c;可以查看到一些未清的記賬更改通知單&#xff0c;點擊工具欄上的創建轉儲單&am…

Docker Swarm總結+service創建和部署、overlay網絡以及Raft算法(2/3)

博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼下載地址&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&#x1f3fb;…

新的預測模型的局部評價指標-pAUROCc

新的預測模型的局部評價指標-pAUROCc Background 局部評價主要是用在不平衡數據上&#xff0c;其合理性&#xff1a;1.局部評價比全局評價敏感&#xff0c;更容易區分模型的優劣&#xff1b;2.臨床決策曲線&#xff08;DCA&#xff09;可知&#xff0c;模型使用過程中&#x…

什么是JSX

在React組件中&#xff0c;JSX&#xff08;JavaScript XML&#xff09;是一種語法擴展&#xff0c;用于描述組件的結構和外觀。JSX允許我們在JavaScript中編寫類似HTML的標記語言&#xff0c;以創建React元素。 在React組件中&#xff0c;render方法是用于定義并返回組件的結構…

HarmonyOS開發(六):構建簡單頁面

1、Column&Row組件 1.1、概述 一個頁面由很多組件組成&#xff0c;如果需要把這些組件組織起來布局好&#xff0c;需要借助容器組件來實現。 容器組件是一種特殊的組件&#xff0c;它可以包含其他組件&#xff0c;而且按照一定的規律布局&#xff0c;一個容器組件中可以…

Linux--初識和基本的指令(2)

目錄 前言 1. 指令 1.1 cd其它攜帶指令 1.2 ls其它攜帶指令 1.3 which指令 1.4 alias指令 1.5 mkdir其他攜帶指令 1.7 yum -y install 安裝指令 1.8 stat指令 1.9解決指令失控狀態 1.10 rmdir&&rm指令 1.11 man指令 1.12 cp指令 1.13 mv指令 1.14 nano…

vue項目引入中國地圖

先安裝有china.js的版本 npm install echarts4.8 --save //以前的版本有china.js <template><div class"mapMain"><div id"map" style"width: 30vw; height: 30vw;" /></div> </template><script>//引入文…

提高蘋果企業簽名穩定性的關鍵方法包括幾點

提高蘋果企業簽名穩定性的關鍵方法包括以下幾點&#xff1a; 控制簽名量&#xff1a;蘋果企業簽名的穩定性與每本書的簽發量有很大的關系。一般來說&#xff0c;每本書上簽10個APP和每本書上簽100個APP是兩種不同的概念。為了提高穩定性&#xff0c;正規的簽名平臺會嚴格控制每…

「純電」廝殺,廣州車展的年末大戲

作者 |張祥威 編輯 |德新 年末的廣州車展&#xff0c;揭開純電動車激烈廝殺的一角。 1100多款車型亮相在這屆車展&#xff0c;其中新能源車有460多輛&#xff0c;占接近一半比例。這其中&#xff0c;人們的焦點又放在十多款純電車型上。 造車新勢力中&#xff0c;理想的首款…

什么是數據確權?

在數字化時代&#xff0c;數據已經成為一種新型資產&#xff0c;”新的石油“&#xff0c;具有巨大的價值&#xff0c;未來世界經濟競爭一定程度上是數字經濟的競爭&#xff0c;而非工業的競爭。數據相關法律制度&#xff0c;尚且還不完整&#xff0c;推動數字經濟的發展&#…

工作流引擎的主要表結構

工作流引擎的主要表結構及其作用如下&#xff0c;我們從開源的馳騁工作流為例來說明。 1. WF_GenerWorkFlow&#xff1a;該表主要用于存儲流程引擎級別的數據, 發起人&#xff0c;發起日期&#xff0c;workid, 流程狀態&#xff0c;流程標題&#xff0c;運行到的節點。 2. WF_…

快速入門go語言學習筆記

文章目錄 1、初識go1.1、go語言1.2 第一個Go程序 2、基礎類型2.1、命名2.2、變量2.2.1 變量聲明2.2.2 變量初始化2.2.3 變量賦值2.2.4 匿名變量 2.3、常量2.3.1 字面常量(常量值)2.3.2 常量定義2.3.3 iota枚舉 2.4、基礎數據類型2.4.1 分類2.4.2 布爾類型2.4.3 整型2.4.4 浮點型…

逆向扒cocosjs安卓包教程-破解加密的js源碼

本文只適用于cocosjs引擎打包的游戲apk,針對此類apk進行源碼級別的逆向破解,可直接逐個破解工程內的源碼部分,讓游戲邏輯大白于你的面前,你可以針對js源碼進行二次開發。按照我的教程破解過程中遇到什么問題,歡迎留言。 準備apk包 準備一個你確定用cocosjs打包好的apk包…

XSLVGL2.0 User Manual 資源管理器(v2.0)

XSLVGL2.0 開發手冊 XSLVGL2.0 User Manual 資源管理器 1、概述2、特性3、APIs3.1、xs_resource_get3.2、xs_resource_get_string3.3、xs_resource_set_search_dir3.4、xs_resource_bind_id3.5、xs_resource_set_lang_desc3.6、xs_resource_update3.7、xs_resource_unbind_id3…

循環小練習

#forfor i in range(1,11):print(f開始循環{i},i)\i1 while i < 11:print(f開始循環{i},i)i1list1[1,2,3,4,5] SUMsum(list1) print(SUM)#求和 n int(input("請輸入一個數n:")) sum10 i1 while i < n1:#print(f開始循環{i},i)#sum1 sum1isum1ii1 print(sum1…

ubuntu安裝cuda驅動報錯及解決,屢試不爽

機器重啟輸入nvidia-smi提示如下錯誤,字面意思就是驅動和庫不匹配 Failed to initialize NVML: Driver/library version mismatch 查看一下nvidia相關庫 sudo dpkg --list | grep nvidia-* 將所有已安裝庫卸載 sudo apt purge nvidia-* 重新安裝驅動 sudo ./NVIDIA-Linux-…