最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python集合之set和frozenset的使用詳解

 更新時間:2022年04月26日 14:28:40   作者:XerCis  
目前Python有兩種內(nèi)置集合類型:set和frozenset,其中set?是可變的,而frozenset?是不可變的。本文將通過示例詳細講解二者的使用,感興趣的小伙伴可以了解一下

簡介

集合對象 set 是由具有唯一性的可哈希對象組成的無序多項集,如 list 不能哈希因此,不能作為 set 的一項。

set 的常見用途包括成員檢測、從序列中去除重復項以及數(shù)學中的集合類計算,如交集、并集、差集與對稱差集等。

set 不記錄元素位置或插入順序。 相應(yīng)地,set 不支持索引、切片或其他序列操作。

目前有兩種內(nèi)置集合類型,set 和 frozenset:

  • set 是可變的,其內(nèi)容可以通過 add() 和 remove() 來改變。由于是可變類型,所以不可哈希值,則不能作為字典的鍵或其他集合的元素。
  • frozenset 是不可變的,所以可哈希,因此可以用為字典的鍵或其他集合的元素。

除了可以使用 set 構(gòu)造器,非空的 set (不是 frozenset) 還可以通過將以逗號分隔的元素列表包含于花括號之內(nèi)來創(chuàng)建,例如: {‘jack’, ‘sjoerd’}。

構(gòu)造

花括號內(nèi)用逗號分隔

集合推導式

類型構(gòu)造器

a = {1, 2, 3}  # 花括號內(nèi)用逗號分隔
b = {i for i in range(4) if i > 0}  # 集合推導式
c = set([1, 2, 3])  # 類型構(gòu)造器
print(a, type(a))
print(b, type(b))
print(c, type(c))
# {1, 2, 3} <class 'set'>
# {1, 2, 3} <class 'set'>
# {1, 2, 3} <class 'set'>

基本使用

a = {1, 2, 3}
print(len(a))  # 元素數(shù)量
print(1 in a)  # 檢測成員
print(1 not in a)  # 檢測成員
# 3
# True
# False

交集、并集、差集、對稱差集

A = {1, 2, 3}
B = {3, 4, 5}

print(A.intersection(B))  # 交集
print(A.union(B))  # 并集
print(A.difference(B))  # 差集
print(A.symmetric_difference(B))  # 對稱差集
# {3}
# {1, 2, 3, 4, 5}
# {1, 2}
# {1, 2, 4, 5}

無交集、子集、超集

  • 與other無交集:isdisjoint(other)
  • 是other的子集:issubset(other),相當于 set <= other
  • 是other的超集:issuperset(other),相當于 set >= other
A = {1, 2, 3}
B = {3, 4, 5}
C = {1, 2, 3, 4, 5, 6}
D = {7, 8, 9}

# 是否無交集
print(A.isdisjoint(A))  # False
print(A.isdisjoint(B))  # False
print(A.isdisjoint(C))  # False
print(A.isdisjoint(D))  # True
print()

# 是否子集
print(A.issubset(A))  # True
print(A.issubset(B))  # False
print(A.issubset(C))  # True
print(A.issubset(D))  # False
print()

# 是否超集
print(C.issuperset(A))  # True
print(C.issuperset(B))  # True
print(C.issuperset(C))  # True
print(C.issuperset(D))  # False

運算符

A、B、C 是 C 的子集,C 是 A、B、C 的超集

A、B 是 C 的真子集,C 是 A、B 的真超集

運算符含義
<=子集
<真子集
>=超集
>真超集
&交集
|并集
-差集
^對稱差集
A = {1, 2, 3}
B = {3, 4, 5}
C = {1, 2, 3, 4, 5, 6}
D = {7, 8, 9}

# 子集,相當于issubset(other)
print(A <= C)  # True
print(B <= C)  # True
print(C <= C)  # True
print(D <= C)  # False
print()

# 真子集
print(A < C)  # True
print(B < C)  # True
print(C < C)  # False
print(D < C)  # False
print()

# 超集,相當于issuperset(other)
print(C >= A)  # True
print(C >= B)  # True
print(C >= C)  # True
print(C >= D)  # False
print()

# 真超集
print(C > A)  # True
print(C > B)  # True
print(C > C)  # False
print(C > D)  # False
print()

# 交集,相當于intersection(*other)
print(A & B)  # {3}
print(A.intersection(B))  # {3}

# 并集,相當于union(*other)
print(A | B)  # {1, 2, 3, 4, 5}
print(A.union(B))  # {1, 2, 3, 4, 5}

# 差集,相當于difference(*other)
print(A - B)  # {1, 2}
print(A.difference(B))  # {1, 2}

# 對稱差集,相當于symmetric_difference(other)
print(A ^ B)  # {1, 2, 4, 5}
print(A.symmetric_difference(B))  # {1, 2, 4, 5}

可用于 set 的操作

不可用于不可變的 frozenset

操作含義
add(elem)添加單個元素
remove(elem)移除單個元素,如果不存在報錯
discard(elem)移除單個元素,如果存在
pop()移除并返回任一元素,集合為空報錯
clear()移除所有元素
update(*others)
set |= other
添加元素
difference_update(*others)
set -= other
移除元素
symmetric_difference_update(other)
set ^= other
移除相同元素
A = {1, 2, 3}
A.add(4)  # 添加單個元素
print(A)  # {1, 2, 3, 4}

A = {1, 2, 3}
A.remove(3)  # 移除單個元素,如果不存在報錯
print(A)  # {1, 2}

A = {1, 2, 3}
A.discard(3)  # 移除單個元素,如果存在
A.discard(99)  # 移除單個元素,如果存在
print(A)  # {1, 2}

A = {2, 1, 3}
print(A.pop())  # 移除并返回任一元素,集合為空報錯

A = {1, 2, 3}
A.clear()  # 移除所有元素
print(A)  # set()
A = {1, 2, 3}
B = {3, 4, 5}
A.update(B)  # 添加元素
# A |= B  # 添加元素
print(A)  # {1, 2, 3, 4, 5}

A = {1, 2, 3}
B = {3, 4, 5}
A.difference_update(B)  # 移除元素
# A -= B  # 移除元素
print(A)  # {1, 2}

A = {1, 2, 3}
B = {3, 4, 5}
A.symmetric_difference_update(B)  # 移除相同元素
# A ^= B  # 移除相同元素
print(A)  # {1, 2, 4, 5}

以上就是Python集合之set和frozenset的使用詳解的詳細內(nèi)容,更多關(guān)于Python集合set frozenset的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 防止死鎖的方法

    Python 防止死鎖的方法

    這篇文章主要介紹了Python 防止死鎖的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Python群發(fā)郵件實例代碼

    Python群發(fā)郵件實例代碼

    今天試了試Python發(fā)郵件,突然想到能不能群發(fā)郵件呢?群發(fā)郵件是smtplib的一個bug,不過最終還是解決了
    2014-01-01
  • Python比較配置文件的方法實例詳解

    Python比較配置文件的方法實例詳解

    工作中最常見的配置文件有四種:普通key=value的配置文件、Json格式的配置文件、HTML格式的配置文件以及YMAML配置文件。這篇文章主要介紹了Python比較配置文件的方法 ,需要的朋友可以參考下
    2019-06-06
  • Python機器學習之決策樹算法

    Python機器學習之決策樹算法

    這篇文章主要為大家詳細介紹了Python機器學習之決策樹算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python調(diào)用C/C++的方法解析

    Python調(diào)用C/C++的方法解析

    這篇文章主要介紹了Python調(diào)用C/C++的方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Python自動化測試框架pytest的詳解安裝與運行

    Python自動化測試框架pytest的詳解安裝與運行

    這篇文章主要為大家介紹了Python自動化測試框架pytest的簡介以及安裝與運行,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Python?pluggy框架使用示例代碼

    Python?pluggy框架使用示例代碼

    這篇文章主要介紹了Python?pluggy框架基礎(chǔ)用法總結(jié),本文通過三個例子結(jié)合代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • pycharm?python代碼調(diào)試跳出for循環(huán)問題

    pycharm?python代碼調(diào)試跳出for循環(huán)問題

    這篇文章主要介紹了pycharm?python代碼調(diào)試跳出for循環(huán)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python實現(xiàn)密碼驗證合格程序的思路詳解

    python實現(xiàn)密碼驗證合格程序的思路詳解

    這篇文章主要介紹了python實現(xiàn)密碼驗證合格程序的思路詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Python 批量合并多個txt文件的實例講解

    Python 批量合并多個txt文件的實例講解

    今天小編就為大家分享一篇Python 批量合并多個txt文件的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

韶关市| 遵化市| 鄯善县| 双柏县| 江山市| 行唐县| 卢湾区| 永修县| 姚安县| 潞西市| 镇宁| 山西省| 赣榆县| 延寿县| 万载县| 湘阴县| 鄂州市| 菏泽市| 南汇区| 清水河县| 周口市| 武穴市| 栖霞市| 三明市| 岢岚县| 富裕县| 留坝县| 沅陵县| 新民市| 略阳县| 泗水县| 商都县| 额敏县| 攀枝花市| 茂名市| 邵东县| 呼伦贝尔市| 花莲市| 阿克苏市| 清水河县| 沅陵县|