溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python集合的常用方法有哪些

發布時間:2022-03-04 16:11:47 來源:億速云 閱讀:217 作者:iii 欄目:開發技術

這篇“Python集合的常用方法有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python集合的常用方法有哪些”文章吧。

    什么是集合?

    集合并不是一種數據處理類型,而是一種中間類型。

    • 集合(set)是一個無序、不重復的元素序列

    • 經常被用來處理兩個列表進行交并差的處理性

    • 集合與列表一樣,支持所有的不可變數據類型

    集合中所有的元素放在 {} 中間,并用逗號分開,例如:

    {1, 2, 3},一個包含 3 個整數的列表

    {‘a’, ‘b’, ‘c’},一個包含 3 個字符串的列表

    集合與列表的區別

    功能列表集合
    順序有序無序
    內容可重復不可重復
    功能用于數據的使用用于數據的交集、并集、差集的獲取
    索引有索引無索引
    符號[ ] —> [1, 2, 3]{ } —> {1, 2, 3}

    集合的創建方法

    通過 set 函數創建集合,也可以使用有值的大括號來創建。 如 {1, 2} ,但不能使用空的大括號來創建。(空的大括號是一個空的字典)

    示例如下:

    test_set_01 = set()				# ---> 一個空的集合
    test_set_02 = set([1, 2, 3])	# ---> 傳入列表或元組
    test_set_03 = {1, 2, 3}			# ---> 傳入元素
    test_set_04 = {}  				# ---> 這樣的方式是錯誤的,這是一個空的字典
    
    print(type(test_set_04))
    
    # 執行結果如下:
    # ---> <class 'dict'>
    test_list_01 = ['name', 'age', 'birthday']
    test_set_01 = set(test_list_01)
    print(test_set_01)
    
    # 執行結果如下:
    # >>> {'name', 'age', 'birthday'}		可以看到,傳入的并不是列表,而是列表的元素
    
    
    test_list_02 = ['name', 'age', 'birthday', 'age']
    test_set_02 = set(test_list_02)
    print(test_set_02)
    
    # 執行結果如下:
    # >>> {'name', 'age', 'birthday'}		可以看到,列表里重復的元素,做了去重的處理
    
    
    test_list_03 = (1, 2, 3, 1, 5)
    test_set_03 = set(test_list_03)
    print(test_set_03)
    
    # 執行結果如下:
    # >>> {1, 2, 3, 5}						可以看到,元組里重復的元素,做了去重的處理
    
    
    test_set_04 = {['name', 'age', 'birthday']}
    print(test_set_04)
    
    # 執行結果如下:
    # >>> TypeError: unhashable type: 'list'	集合內不可傳入列表,否則會報錯
    
    
    test_set_05 = {{'name', 'age', 'birthday'}}
    print(test_set_05)
    
    # 執行結果如下:
    # >>> TypeError: unhashable type: 'set' 	集合內同樣也不可傳入字典
    
    
    test_set_06 = {'name', 1, 3.14, (666, 888)}
    print(test_set_06)
    
    # 執行結果如下:
    # >>> {'name', 3.14, 1, (666, 888)}			集合內可以傳入不同的數據類型(列表不可以直接傳入)

    集合的增刪改

    add 函數

    add 函數的功能:用于集合中添加一個元素,如果集合中已經存在該被添加的元素,則該函數不執行。

    add 函數的用法:set.add(item) ;item 為要被添加到集合的元素;無返回值。

    示例如下:

    test_set = {'name', 'age', 'birthday'}
    test_set.add('sex')
    test_set.add('name')
    print(test_set)
    
    # 執行結果如下:
    # >>> {'sex', 'birthday', 'age', 'name'}	已存在的 'name' 元素,未再次執行添加

    update 函數

    update 函數的功能:在集合中加入一個新的集合(或者列表、元組、字符串),如果新集合內的元素在原集合中存在則無視。

    update 函數的用法:set.update(iterable) ;iterable為集合、列表、元組、字符串;無返回值,直接作用于原集合。

    示例如下:

    test_set = set()
    test_list = ['name', 'age', 'birthday']
    test_set.update(test_list)
    print(test_set)
    
    # 執行結果如下:
    # >>> {'birthday', 'age', 'name'}		列表的成員(元素)被添加進集合
    
    
    test_tuple = (666, 888)
    test_set.update(test_tuple)
    print(test_set)
    
    # 執行結果如下:
    # >>> {'name', 'birthday', 'age', 888, 666}		元組的成員(元素)被添加進集合
    
    
    name = 'Neo'
    test_set.update(name)
    print(test_set)
    
    # 執行結果如下:
    # >>> {'name', 'N', 'birthday', 'e', 'age', 'o', 888, 666}		字符串是每個字符都作為元素被添加進集合的

    remove 函數

    remove函數的功能:將集合中某個元素刪除,如果該元素不存在則會報錯。

    remove函數的用法:set.remove(item) ;item 為當前集合中的一個元素;無返回值,直接作用于原集合。

    需要注意的是,item 為集合中的某一個元素,而不是索引。

    示例如下:

    test_set = set()
    test_list = ['name', 'age', 'birthday']
    test_set.update(test_list)
    print(test_set)
    
    # 執行結果如下:
    # >>> {'name', 'birthday', 'age'}
    
    
    test_set.remove('age')
    print(test_set)
    
    # 執行結果如下:
    # >>> {'birthday', 'name'}
    
    
    test_set_01 = set()
    test_set.remove('test')
    print(test_set_01)
    
    # 執行結果如下:
    # >>> KeyError: 'test'		'test'元素不存在則報錯。

    clear 函數

    clear 函數的功能:清空當前集合中所有的元素

    clear 函數的用法:set.clear() ;無返回值,直接作用于原集合。

    示例如下:

    test_set = set()
    test_list = ['name', 'age', 'birthday']
    test_set.clear()
    
    print(test_set)
    
    # 執行結果如下:
    # >>> set()

    del 方法刪除集合

    del 的功能:直接刪除 (作用于集合,無法通過索引刪除)

    示例如下:

    test_set = set()
    test_list = ['name', 'age', 'birthday']
    test_set.update(test_list)
    print(test_set)
    
    # 執行結果如下:
    # >>> {'birthday', 'age', 'name'}
    
    del test_set
    print(test_set)
    
    # 執行結果如下:
    # >>> NameError: name 'test_set' is not defined.

    關于集合的重要說明

    • 集合無法通過索引獲取元素

    • 集合無獲取元素的任何方法

    • 集合只是用來處理列表或元組的一種臨時類型,它不適合存儲、傳輸數據

    獲取兩個集合交、并、差集的函數

    difference() 函數

    什么是差集:

    a 和 b 兩個集合,由所屬于 a 且不屬于 b 的元素組成的集合叫做 a 集合 與 b 集合 的差集。

    difference() 函數的功能:返回集合的差集,即返回的集合元素包含在第一個集合中,但不包含在第二個集合中。

    difference() 函數的用法:a_set.difference(b_set) ;b_set 為當前集合需要比對的集合;返回值為原集合作用于對比集合的差集。(即 a_set 與 b_set 的差集)

    示例如下:

    names_set_01 = {'Neo', 'Lily', 'Jack'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_diff = names_set_01.difference(names_set_02)
    
    print(names_diff)
    
    # 執行結果如下:
    # >>> {'Lily', 'Neo'}

    intersection() 函數

    什么是交集?

    a 和 b 兩個集合,分別擁有相同的元素集,稱之為 a 集合 與 b 集合 的交集。

    intersection() 函數的功能:返回兩個或者更多個集合中都包含有的元素。(即交集)

    intersection() 函數的用法:a_set.inersection(b_set...) ;b_set&hellip; 為當前集合需要比對的一個或者多個集合;返回值為原集合作用于對比集合的交集。

    示例如下:

    names_set_01 = {'Neo', 'Lily', 'Jack', 'Adem'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_set_03 = {'Apollo', 'Ben', 'Adem'}
    names_inter = names_set_01.intersection(names_set_02, names_set_03)
    
    print(names_inter)
    
    # 執行結果如下:
    # >>> {'Adem'}

    union() 函數

    什么是并集?

    a 和 b 兩個集合中所有的元素(去掉重復的),即為 a 集合 與 b 集合 的并集。

    union() 函數的功能:返回多個集合的并集,即包含了所有集合的元素(重復的元素,只出現一次)

    union() 函數的用法:a_set.union(b_set...) ;b_set&hellip; 為當前集合需要比對的一個或者多個集合;返回值為原集合作用于對比集合的并集。

    示例如下:

    names_set_01 = {'Neo', 'Lily', 'Jack', 'Adem'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_set_03 = {'Apollo', 'Ben', 'Adem'}
    names_union = names_set_01.union(names_set_02, names_set_03)
    
    print(names_union)
    
    # 執行結果如下:
    # >>> {'Lily', 'Neo', 'Albina', 'Apollo', 'Jack', 'Ben', 'Adem'}

    判斷兩個集合中是否存在相同的元素

    isdisjoint() 函數

    isdisjoint()函數的功能:判斷兩個集合是否包含相同的元素,如果沒有返回 True , 否則就返回 False

    isdisjoint()函數的用法:a_set.isdisjoint(b_set) ;b_set 為與當前集合用來判斷的集合;返回值為布爾值

    示例如下:

    names_set_01 = {'Neo', 'Lily', 'Jack', 'Adem'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_isdisjoint = names_set_01.isdisjoint(names_set_02)
    print(names_isdisjoint)
    
    # 執行結果如下:
    # >>> False
    
    names_set_01 = {'Neo', 'Lily', 'Jack'}
    names_set_02 = {'Ben', 'Adem', 'Albina'}
    names_isdisjoint = names_set_01.isdisjoint(names_set_02)
    print(names_isdisjoint)
    
    # 執行結果如下:
    # >>> True

    拓展 - 集合的 &lsquo;&、|、- 運算符&rsquo;

    & 符可以計算兩個集合的交集,與集合的intersection()函數實現的功能一樣

    | 符可以計算兩個集合的并集,與集合的union()函數實現的功能一樣

    - 運算符可以計算兩個集合的差集,與集合的difference()函數實現的功能一樣

    代碼示例如下:

    # 交集
    names_set_01 = {'Neo', 'Lily', 'Jack', 'Adem'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_set_03 = {'Apollo', 'Ben', 'Adem'}
    names_inter = names_set_01.intersection(names_set_02, names_set_03)
    names_inter_01 = names_set_01 & names_set_02 & names_set_03
    
    print(names_inter)
    print(names_inter_01)
    
    # 執行結果如下:
    # >>> {'Adem'}
    # >>> {'Adem'}
    # 差集
    names_set_01 = {'Neo', 'Lily', 'Jack'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_diff = names_set_01.difference(names_set_02)
    names_diff_01 = names_set_01 - names_set_02
    
    print(names_diff)
    print(names_diff_01)
    
    # 執行結果如下:
    # >>> {'Lily', 'Neo'}
    # >>> {'Lily', 'Neo'}
    # 并集
    names_set_01 = {'Neo', 'Lily', 'Jack', 'Adem'}
    names_set_02 = {'Jack', 'Adem', 'Albina'}
    names_set_03 = {'Apollo', 'Ben', 'Adem'}
    names_union = names_set_01.union(names_set_02, names_set_03)
    names_union_1 = names_set_01 | names_set_02 | names_set_03
    
    print(names_union)
    print(names_union_1)
    
    # 執行結果如下:
    # >>> {'Adem', 'Albina', 'Neo', 'Jack', 'Lily', 'Ben', 'Apollo'}
    # >>> {'Adem', 'Albina', 'Neo', 'Jack', 'Lily', 'Ben', 'Apollo'}

    &、|、- 與 intersection()、union()、difference()函數的不同之處

    集合運算時:

    intersection()、union()、difference()函數的參數可以是集合,也可以是列表或字典、字符串。

    &、|、-運算符左右兩邊必須是集合。

    以上就是關于“Python集合的常用方法有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女