首頁 後端開發 Python教學 Python集合(set)類型的操作總結

Python集合(set)類型的操作總結

Oct 20, 2016 am 10:15 AM
python

python的set和其他語言類似, 是一個無序不重複元素集, 基本功能包括關係測試和消除重複元素. 集合對象還支持union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算.

sets 支援x in set, len(set),和for x in set。作為一個無序的集合,sets不記錄元素位置或插入點。因此,sets不支援 indexing, slicing, 或其它類別序列(sequence-like)的操作。

下面來點簡單的小例子說明把。

>>> x = set('spam')

>>> y = set(['h','a','m'])

>>> x, y

(set([ 'a', 'p', 's', 'm']), set(['a', 'h', 'm']))

再來些小應用。

>>> x & y # 交集

set(['a', 'm'])

>>> x | y # 並集

set(['a', 'p', 's ', 'h', 'm'])

>>> x - y # 差集

set(['p', 's'])

記得以前個網友提問怎麼去除海量列表裡重複元素,用hash來解決也行,只不過感覺在性能上不是很高,用set解決還是很不錯的,示例如下:

>>> a = [11,22,33,44,11,22]

>>> b = set(a)

>>> b

set([33, 11, 44, 22])

>>> c = [i for i in b]

>>> c>>>

[33, 11, 44, 22]

很酷把,幾行就可以搞定。

1.8 集合

集合用於包含一組無序的物件。要建立集合,可以使用set()函數並像下面這樣提供一系列的項目:

s = set([3,5,9,10])      #建立一個數值集合

t = set("Hello" )         #建立一個唯一字元的集合

與清單和元組不同,集合是無序的,也無法透過數字進行索引。此外,集合中的元素不能重複。例如,如果檢查前面程式碼中t集合的值,結果會是:

>>> t

set(['H', 'e', 'l', 'o'])

注意只出現了一'l'。

集合支援一系列標準作業,包括並集、交集、差集和對稱差集,例如:

a = t | s          # t 和s的並集

b = t & s    # t 和s的並集

b = t & s    #交集

c = t – s          # 求差集(項在t中,但不在s中)

d = t ^ s         # 差異項中)

基本操作:

t.add('x')            # 新增一項

s.update([10,37,42]) )可以刪除一項:

t.remove('H')

len(s)

set 的長度

x in s

測試x 是否是s 的成員

x 是否不是s 的成員

s.issubset(t)

s

測試是否s 中的每一個元素都在t 中

s.issuperset(t)

s >= t測試是否t 中的每一個元素都在s 中

s.union(t)

s | t

回傳一個新的set 包含s 和t 中的每一個元素

s.intersection(t)

s & t

返回一個新的set 包含s 和t 中的公共元素

s.difference(t)

s - t

返回一個新的set 包含s 中有但是t 中沒有的元素

s.symmetric_difference(t)

s ^ t

返回一個新的set 包含s 和t 中不重複的元素

s.copy()

:union(), intersection(), difference() 和symmetric_difference() 的非運算子(non-operator,就是形如s.union()這樣的)版本將會接受任何iterable 作為參數。相反,它們的運算子版本(operator based counterparts)要求參數必須是 sets。這可以避免潛在的錯誤,如:為了更可讀而使用 set('abc') & 'cbs' 來取代 set('abc').intersection('cbs')。從 2.3.1 版本中做的更改:以前所有參數都必須是 sets。

另外,Set 和 ImmutableSet 兩者都支援 set 與 set 之間的比較。兩個 sets 在也只有在這種情況下是相等的:每一個 set 中的元素都是另一個中的元素(二者互為subset)。一個 set 比另一個 set 小,只有在第一個 set 是第二個 set 的 subset 時(是一個 subset,但不相等)。一個 set 比另一個 set 打,只有在第一個 set 是第二個 set 的 superset 時(是一個 superset,但不相等)。

子 set 和相等比較並不會產生完整的排序功能。例如:任兩個 sets 都不相等也不互為子 set,因此下列的運算都會回傳 False:a

b。因此,sets 不提供 __cmp__ 方法。

因為 sets 只定義了部分排序功能(subset 關係),list.sort() 方法的輸出對於 sets 的列表沒有定義。

運算子

  運算結果

hash(s)

  回傳 s 的 hash 值

下面這個表列出了對於Set 可用二對於ImmutableSet 不可用的運算:

運算子(voperator)

等價於

運算結果

s.update(t)

運算結果

s.update(t)

運算結果

s.update(t)

運算結果

回傳增加了set “t”中元素後的set “s”

s.intersection_update(t)

s &= t

回傳只保留含有set “t”中元素的set “s”

s. difference_update(t)

s -= t

返回刪除了set “t”中含有的元素後的set “s”

s.symmetric_difference_update(t)

」或set 「s」中有而非兩者都有的元素的set 「s」

s.add(x)

向set 「s」增加元素x

s.remove(x)

從set “s”中刪除元素x, 如果不存在則引發KeyError

s.discard(x)

如果在set “s”中存在元素x, 則刪除

s.pop()

刪除並且返回set “s”中的一個不確定的元素, 如果為空則引發KeyError

s.clear()

刪除set “s”中的所有元素

請注意:非運算符版本的update() , intersection_update(), difference_update()和symmetric_difference_update()將會接受任意iterable 作為參數。從 2.3.1 版本做的更改:以前所有參數都必須是 sets。

也請注意:這個模組也包含一個 union_update() 方法,它是 update() 方法的一個別名。包含這個方法是為了向後相容。程式設計師應該多使用 update() 方法,因為這個方法也被內建的 set() 和 frozenset() 類型支援。 🎜🎜🎜🎜
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles