0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python集合是什么

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-02-23 17:01 ? 次閱讀

python集合

集合(英文名 set),它是一個無序的不重復(fù)元素序列。

這里面有兩個重點(diǎn):

無序,

不重復(fù)

1. 創(chuàng)建集合

集合的創(chuàng)建有兩種方法

第一種方法:使用 花括號 {} 直接創(chuàng)建,創(chuàng)建的時候,{} 可以包含有重要的元素,但是創(chuàng)建完后,集合會去重,只留第一個。

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])

第二種方法:使用 set() 方法進(jìn)行創(chuàng)建,當(dāng)set() 函數(shù)不接任何參數(shù)時,創(chuàng)建的是空集合,如果不創(chuàng)建空集合,可以傳入一個列表。

>>> bset = set()  # 空集合
>>> bset
set([])
>>> cset = set(["Apple", "Huawei", "Xiaomi"])
>>> cset
set(['Huawei', 'Apple', 'Xiaomi'])

2. 增刪改查

增加元素

使用 add 函數(shù)可以往集合中傳入函數(shù)

>>> aset = set()
>>> aset
set([])
>>> aset.add("Apple")
>>> aset.add("Huawei")
>>> aset
set(['Huawei', 'Apple'])

另外,還可以使用 update 函數(shù),來往集合中添加元素,update 函數(shù)后可接集合,列表,元組,字典等。

這是接集合的例子

>>> aset = set()
>>> aset
set([])
>>>
>>> # 接集合
>>> aset.update({"Apple"})
>>> aset
set(['Apple'])
>>>
>>> # 接列表
>>> aset.update(["Huawei"])
>>> aset
set(['Huawei', 'Apple'])
>>>
>>> # 接元組
>>> aset.update(("Xiaomi",))
>>> aset
set(['Huawei', 'Apple', 'Xiaomi'])
>>>
>>> # 接字典
>>> aset.update({"VIVO": "xxxx"})
>>> aset
set(['Huawei', 'Apple', 'VIVO', 'Xiaomi'])

刪除元素

使用 remove 函數(shù)可以刪除集合中的元素

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("Xiaomi")
>>> aset
set(['Huawei', 'Apple'])

使用 remove 函數(shù),如果對應(yīng)的元素不存在,是會報錯的。

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("VIVO")
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'VIVO'

對于這種情況,你可以使用 discard 函數(shù),存在元素則移除,不存在也不會報錯。

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.discard("VIVO")
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])

此外,還有一個 pop 函數(shù),用于從集合中隨機(jī)刪除元素,和列表、字典的 pop 不一樣,這里的 pop 不能加任何的參數(shù)。

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.pop()
'Huawei'
>>> aset.pop()
'Xiaomi'
>>> aset.pop()
'Apple'

最后,還要介紹一個 clear 函數(shù),它用于清空集合的元素。

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])
>>> aset.clear()
>>> aset
set([])

修改元素

文章開頭處,已經(jīng)說明了集合是 無序 的,因此集合是沒有索引的。

既然沒有索引,修改也無從談起。

記住:集合只有添加元素、刪除元素。

查詢元素

同上,沒有順序,也就沒有索引,沒有索引,查詢也無從談起。

但是我們可以查看集合的其他內(nèi)容

比如,查看集合的長度

>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> len(aset)
3

3. 集合運(yùn)算

求合集

將兩個集合進(jìn)行合并并去重,可以使用 union 函數(shù),下面的示例中,由于 Huawei 是重復(fù)的元素,只會保留一個。

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.union(bset)
set(['Huawei', 'Apple', 'Xiaomi'])

另外還可以使用 | 的操作符

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset | bset
set(['Huawei', 'Apple', 'Xiaomi'])

求差集

要找出存在集合 A 但是不存在 集合 B 的元素,就是對兩個集合求差集。

可以使用 difference 函數(shù),下面的示例中, Apple 在 aset 中存在,但在 bset 中不存在。

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.difference(bset)
set(['Apple'])

另外還可以使用 - 的操作符,更加直觀

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset - bset
set(['Apple'])

求交集

要找出存在集合 A 并且存在集合 B 的元素,就是對兩個集合求交集。

可以使用 intersection 函數(shù)

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.intersection(bset)
set(['Huawei'])
>>>

intersection 相似的還有一個 intersection_update 函數(shù),它們的區(qū)別是,intersection_update 會原地更新在 aset 上,而不是會回交集。

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.intersection_update(bset)
>>> aset
set(['Huawei'])

另外還可以使用 & 的操作符

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset & bset
set(['Huawei'])

求不重合集

如果計算兩個集合中不重復(fù)的元素集合,可以使用 symmetric_difference 函數(shù)

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.symmetric_difference(bset)
set(['Xiaomi', 'Apple'])

symmetric_difference 相似的還有一個 symmetric_difference_update 函數(shù),它們的區(qū)別是,symmetric_difference_update 會原地更新在 aset 上,而不是直接返回。

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.symmetric_difference_update(bset)
>>> aset
set(['Apple', 'Xiaomi'])

4. 集合判斷

判斷是否有某元素

>>> aset = {"Apple", "Huawei"}
>>> "Apple" in aset
True

判斷兩集合是否有相同元素

如果兩集合有相同元素,則返回 False,如果沒有相同元素,則返回 True

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.isdisjoint(bset)
False

判斷是否是子集

>>> aset = {"Apple", "Huawei"}
>>> bset = {"Huawei"}
>>> bset.issubset(aset)
True

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集合
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8127
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4804

    瀏覽量

    84910
收藏 人收藏

    評論

    相關(guān)推薦

    使用Python實(shí)現(xiàn)xgboost教程

    使用Python實(shí)現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、模型評估和模型預(yù)測。以下是一個詳細(xì)的教程,指導(dǎo)你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?249次閱讀

    AN42-基準(zhǔn)電壓源電路集合

    電子發(fā)燒友網(wǎng)站提供《AN42-基準(zhǔn)電壓源電路集合.pdf》資料免費(fèi)下載
    發(fā)表于 01-08 14:33 ?0次下載
    AN42-基準(zhǔn)電壓源電路<b class='flag-5'>集合</b>

    Java集合API的改進(jìn)介紹

    簡介 本文我們將探討不同 jdk 版本中各類的起源,以及新引入的類和接口背后的目的。我們將分析之前版本存在的問題,以及為何需要引入新的類或接口。此外,我們還將介紹集合類和接口中的新特性。文章將逐一
    的頭像 發(fā)表于 11-22 11:12 ?238次閱讀
    Java<b class='flag-5'>集合</b>API的改進(jìn)介紹

    使用Python進(jìn)行圖像處理

    下面是一個關(guān)于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?263次閱讀
    使用<b class='flag-5'>Python</b>進(jìn)行圖像處理

    AN-31放大器電路集合

    電子發(fā)燒友網(wǎng)站提供《AN-31放大器電路集合.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 10:33 ?0次下載
    AN-31放大器電路<b class='flag-5'>集合</b>

    pytorch和python的關(guān)系是什么

    在當(dāng)今的人工智能領(lǐng)域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學(xué)易用、豐富的庫和框架以及強(qiáng)大的社區(qū)支持,使其成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域的首選語言。而在深度學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 08-01 15:27 ?2168次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向?qū)ο蟮木幊陶Z言,在科學(xué)計算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡潔的語法、對動態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python在多個平臺
    的頭像 發(fā)表于 07-24 10:41 ?623次閱讀

    Python在AI中的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI中的幾個關(guān)鍵應(yīng)用實(shí)例,包括機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、自然語言處理、
    的頭像 發(fā)表于 07-19 17:16 ?1269次閱讀

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊方法。下面我們開始學(xué)習(xí)這九種不同的方法來實(shí)現(xiàn) Pyt
    的頭像 發(fā)表于 07-18 14:53 ?452次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?1322次閱讀

    python訓(xùn)練出的模型怎么調(diào)用

    Python中,訓(xùn)練出的模型可以通過多種方式進(jìn)行調(diào)用。 1. 模型保存與加載 在Python中,訓(xùn)練好的模型需要被保存,以便在其他程序或會話中使用。以下是一些常用的模型保存和加載方法。 1.1
    的頭像 發(fā)表于 07-11 10:15 ?2154次閱讀

    用pycharm進(jìn)行python爬蟲的步驟

    以下是使用PyCharm進(jìn)行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的Python集成開發(fā)環(huán)境
    的頭像 發(fā)表于 07-11 10:11 ?911次閱讀

    Python自動化測試框架及其應(yīng)用

    Pytest是一個非常成熟的全功能的Python測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,功能更強(qiáng)大。
    的頭像 發(fā)表于 04-03 16:15 ?580次閱讀
    <b class='flag-5'>Python</b>自動化測試框架及其應(yīng)用

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關(guān)模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發(fā)表于 02-26 09:53 ?1278次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    如何使用linux下gdb來調(diào)試python程序

    如何使用linux下gdb來調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試器)來調(diào)試Python程序。GDB是一個強(qiáng)大的調(diào)試工具,可以幫助開發(fā)者診斷和修復(fù)程序中的錯誤。在本文
    的頭像 發(fā)表于 01-31 10:41 ?2697次閱讀