Python 集合

集合是不同的可散列對象的可變集合,與列表和元組相同。 它是一個無序的對象集合,這意味著它不記錄元素位置或插入順序,因此不能使用索引訪問元素。

該集合是數學中集合的 Python 實現。集合對象有合適的方法來執行數學集合運算,如並集、交集、差集等。

set 對象包含一個或多個不一定是同一類型的項,這些項由逗號分隔並包含在花括弧{}中。下面定義了一個偶數集合對象。

Example: Python Set Object

even_nums = {2, 4, 6, 8, 10} # set of even numbers
emp = {1, 'Steve', 10.5, True} # set of different objects 

集合不存儲重複的對象。即使在花括弧內多次添加對象,set 對象中也只保留一個副本。因此,索引和切片操作不能在集合對象上完成。

Example: Set of Distinct Elements

>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5} 

集合中元素的順序不一定與賦值時給出的順序相同。Python 優化了集合的結構,以便對其執行數學定義的操作。

只有不可變(和 hashable)對象可以是 set 對象的一部分。可以接受數字(整數、浮點數以及複數)、字元串和元組對象,但不接受集合、列表和字典對象。

Example: Set Elements

>>> myset = {(10,10), 10, 20} # valid
>>> myset
{10, 20, (10, 10)}
>>> myset = {[10, 10], 10, 20}  # can't add a list
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    myset = {[10, 10], 10, 20}
TypeError: unhashable type: 'list'
>>> myset = { {10, 10}, 10, 20} # can't add a set
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    myset = { {10, 10}, 10, 20}
TypeError: unhashable type: 'set' 

在上面的例子中,(10,10)是一個元組,因此它成為集合的一部分。但是,[10,10]是一個列表,因此會顯示一條錯誤消息,表示該列表不可刪除。 ( 哈希是計算機科學中的一種機制,能夠更快地搜索計算機內存中的對象。)

即使可變對象不存儲在集合中,集合本身也是可變對象。

使用 set()功能創建一個空集合。空的花括弧將創建一個空的字典,而不是一個空的集合。

Example: Creating an Empty Set

>>> emp = {} # creates an empty dictionary
>>> type(emp)
<class 'dict'>
>>> s = set() # creates an empty set
>>> type(s)
<class 'set'> 

set()函數也用於將字元串、元組或字典對象轉換為 set 對象,如下所示。

Example: Convert Sequence to Set

>>> s = set('Hello') # converts string to set
>>> s
{'l', 'H', 'o', 'e'}
>>> s = set((1,2,3,4,5)) # converts tuple to set
>>> s
{1, 2, 3, 4, 5}
>>> d = {1:'One', 2: 'Two'} 
>>> s = set(d) # converts dict to set
>>> s
{1, 2} 

使用內置的集合功能 add() 、 remove() 或 update() 方法修改集合集合。

Example:

>>> s = set() # creates an empty set
>>> s.add(10) # add an element
>>> s.add(20)
>>> s.add(30)
>>> s
{10, 20, 30}
>>> primeNums = {2, 3, 5, 7}
>>> s.update(primeNums) # update set with another set
>>> s
{2, 3, 20, 5, 7, 10, 30}
>>> s.remove(2) # remove an element
>>> s
{3, 20, 5, 7, 10, 30} 

如前所述,Python 中的集合數據類型實現為數學中定義的集合。可以執行各種設置操作。運算符|、&、-和^分別執行並集、交集、差集和對稱差集運算。這些運算符中的每一個都有一個與內置集合類相關聯的相應方法。

操作例子
聯合:返回一個包含兩個集合元素的新集合。

符: |
法: 集.聯() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1|s2         
{1, 2, 3, 4, 5, 6, 7, 8}

|
|

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1.union(s2)  
{1, 2, 3, 4, 5, 6, 7, 8}   
>>> s2.union(s1)  
{1, 2, 3, 4, 5, 6, 7, 8}

|
| 交集:返回包含兩個集合共有元素的新集合。

符: &
法: 集.交() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1&s2         
{4, 5}                     
>>> s2&s1         
{4, 5}

|
|

>>> s1={1,2,3,4,5}         
>>> s2={4,5,6,7,8}         
>>> s1.intersection(s2)    
{4, 5}                              
>>> s2.intersection(s1)    
{4, 5}

|
| 差異:返回一個只包含第一個集合中元素的集合,而不包含第二個集合中的元素。

符 : –
法: 集.差() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1-s2         
{1, 2, 3}                  
>>> s2-s1         
{8, 6, 7}

|
|

>>> s1={1,2,3,4,5}    
>>> s2={4,5,6,7,8}    
>>> s1.difference(s2) 
{1, 2, 3}                      
>>> s2.difference(s1) 
{8, 6, 7}

|
| 對稱差:返回由兩個集合中的元素組成的集合,不包括公共元素。

符: ^
法: 集.對稱 _ 差() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1^s2         
{1, 2, 3, 6, 7, 8}         
>>> s2^s1         
{1, 2, 3, 6, 7, 8}

|
|

>>> s1={1,2,3,4,5}             
>>> s2={4,5,6,7,8}             
>>> s1.symmetric_difference(s2)
{1, 2, 3, 6, 7, 8}                      
>>> s2.symmetric_difference(s1)
{1, 2, 3, 6, 7, 8}

|

下表列出了內置的集合方法:

方法描述
set.add()向集合中添加元素。如果集合中已經存在某個元素,則它不會添加該元素。
set.clear()從集合中移除所有元素。
set.copy()返回集合的淺拷貝。
set.difference()返回具有唯一元素的新集,這些元素不在作為參數傳遞的另一個集中。
set.difference_update()用作為參數傳遞的另一個集合中的公共元素更新調用方法的集合。
設置.丟棄()從集合中移除特定元素。
set.intersection()返回一個包含給定集合中常見元素的新集合。
set . interface _ update()使用指定集合中的公共元素更新調用 instersection_update()方法的集合。
set.isdisjoint()如果給定的集合沒有公共元素,則返回 true。當且僅當集合的交集是空集時,集合是不相交的。
set.issubset()如果集合(調用 issubset()的集合)包含作為參數傳遞的另一個集合的每個元素,則返回 true。
set.pop()從集合中移除並返回隨機元素。
set.remove()從集合中移除指定的元素。如果找不到指定的元素,將引發錯誤。
set . symmetric _ difference()返回一個包含兩個集合中不同元素的新集合。
set . symmetric difference update()使用指定集合中的公共元素,更新調用 instersection_update()方法的集合。
set.union()從所有給定的集合中返回具有不同元素的新集合。
set.update()通過從傳遞的一個或多個 iterables 中添加不同的元素來更新集合。

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126703.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:09
下一篇 2024-10-03 23:09

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論