當前位置:首頁 » 編程語言 » python中的set

python中的set

發布時間: 2023-08-29 10:52:19

A. python中set是什麼意思

在Python set是基本數據類型的一種集合類型,它有可變集合(set())和不可變集合(frozenset)兩種。

創建集合set、集合set添加、集合刪除、交集、並集、差集的操作都是非常實用的方法。set是一個無序的元素集合,支持並、交、差及對稱差等數學運算,但由於set不記錄元素位置,因此不支持索引、分片等類序列的操作。

tuple算是list和str的雜合(雜交的都有自己的優勢,上一節的末後已經顯示了),那麼set則可以堪稱是list和dict的雜合。

set擁有類似dict的特點:可以用{}花括弧來定義;其中的元素沒有序列,也就是是非序列類型的數據;而且,set中的元素不可重復,這就類似dict的鍵,set也有一點list的特點:有一種集合可以原處修改。

以上內容參考網路-Python

B. python集合

*事先說明:以下代碼及結果來自本設備Python控制台,在不同設備上可能結果有區別,望自己嘗試為妙


集合(set),是一種Python里的(class),

集合類似於列表(list)可更改可迭代(iterable),但是元素不重復

定義集合使用花括弧{},例如

>>> s = {"apple", "banana", "strawberry", "watermelon"}

警告!!!如果使用空括弧

>>> a = {}

>>> a.__class__

<class 'dict'>

a將成為一個字典

想要定義空集合,

請使用類名。

>>> a = set()

類名定義也可以把迭代轉換為集合:

>>> b = set("abc")

>>> b

{'a', 'b', 'c'}

但是,保存後它是無序的。

>>> s

{'banana', 'watermelon', 'strawberry', 'apple'}

(結果僅供參考,在不同設備上略有不同)

下面介紹它的性質:

1. 可更改:

  • 使用add(x)方法添加元素x

>>> s.add("lemon")

>>> s

{'banana', 'strawberry', 'lemon', 'watermelon', 'apple'}


  • 使用update(iter1, iter2, …)方法添加多個可迭代對象(如列表,元組(tuple),另一個集合)里的元素:

>>> s.update(("orange", "grape"))

>>> s

{'banana', 'strawberry', 'orange', 'lemon', 'watermelon', 'apple', 'grape'}

警告!!!如果使用字元串,字元串也會被迭代:

>>> a = set()

>>> a.update("apple")

>>> a

{'a', 'p', 'e', 'l'}


  • 使用remove(x)移除元素x,如果x不存在,則拋出KeyError錯誤

>>> s.remove("lemon")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple', 'grape'}

>>> s.remove("cat")

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

s.remove("cat")

KeyError: 'cat'


  • 使用discard(x)移除元素x,不會發生錯誤

>>> s.discard("grape")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple'}

>>> s.discard("dog")

>>> s

{'banana', 'strawberry', 'orange', 'watermelon', 'apple'}

2. 可迭代:

>>> for x in s:

... print(x)


banana

strawberry

orange

watermelon

apple


3. 可以使用 len 函數獲取集合長度;

>>> len(s)

5

可以使用in關鍵字檢查一個元素是否在集合內,將返回邏輯值(bool)

>>> "apple" in s

True

>>> "candy" in s

False

4.集合具有不重復性,因此它會自動去重:

>>> c = set("Hello World!")

>>> c

{' ', 'e', 'l', 'H', '!', 'r', 'W', 'o', 'd'}

5. 集合的運算

>>> d = set("abcdef")

>>> e = set("efghij")

>>> d

{'c', 'e', 'a', 'b', 'f', 'd'}

>>> e

{'h', 'e', 'g', 'j', 'f', 'i'}

>>> d - e # 集合d去掉集合e含有的元素,或者說集合d包含而集合e不包含的元素(不改變原集合)

{'a', 'b', 'd', 'c'}

>>> d | e # 集合d,e的所有元素

{'c', 'e', 'h', 'g', 'a', 'b', 'j', 'f', 'd', 'i'}

>>> d & e # 集合d,e都包含的元素

{'f', 'e'}

>>> d ^ e # 不同時出現在集合d, e中的元素

{'c', 'g', 'h', 'a', 'b', 'j', 'd', 'i'}

注意!!!

字元串、列表通用的+和*不適用於集合

>>> "abc" + "def"

'abcdef'

>>> [1, 2, 3] + [4, 5, 6]

[1, 2, 3, 4, 5, 6]

>>> d + e

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

d + e

TypeError: unsupported operand type(s) for +: 'set' and 'set'

>>> "a" * 5

'aaaaa'

>>> [1] * 3

[1, 1, 1]

>>> d*3

Traceback (most recent call last):

File "<stdin>", line 1, in <mole>

d * 2

TypeError: unsupported operand type(s) for *: 'set' and 'int'

(作者的小觀點:既然集合是不能重復的,那麼乘以、重復是沒有意義的)

C. Python中list,tuple,dict,set的區別和用法

1、list、tuple是有序列表;dict、set是無序列表
2、list元素可變、tuple元素不可變

3、dict和set的key值不可變,唯一性

4、set只有key沒有value

5、set的用途:去重、並集、交集等

6、list、tuple:+、*、索引、切片、檢查成員等

7、dict查詢效率高,但是消耗內存多;list、tuple查詢效率低、但是消耗內存少

D. python--set(集合)

一、創建集合

創建非空集合:集合中set括弧中需要的參數的數據類型有:序列(包括字元串、列表、元組),字典可以轉為集合,注意數值類型不能作為集合的參數,如int類型。

二、添加元素

add() 方法是將要添加的元素作為一個整體添加到集合中

update() 方法是把要傳入的元素拆分成單個字元,存於集合中,並去掉重復的

三、刪除元素

集合的刪除操作使用的方法跟列表是一樣的,使用的也是 remove 方法,只能單個刪除

四、遍歷集合

五、集合與字元串、列表、元組互轉,集合轉字典

六、查找元素並刪除

函數原型: a.discard(b)

參數說明:a為一個set類型的變數;b表示要查找並刪除的元素

函數作用:在集合setVar中查找element元素,如果存在則刪除;如果沒找到,則什麼也不做。該函數沒有返回值

七、pop用法

函數原型: set1.pop()     刪除並返回集合set1中的第一個元素,如果為空引發KeyError錯誤+

八、clear、和len的用法

clear     方法用於清空集合中的所有元素

    方法用於集合拷貝

len     跟求序列的長度的函數len()是一樣的,返回的是集合中有多少個元素

九、求集合的交集、並集、差集和difference的用法

求集合的 交集 使用的符號是 「&」

求集合的 並集 用的是符號 「|」

求集合的 差集 使用的符號是減號 「-」

difference    等價於集合的差集 ,查看兩個集合的不同之處。這種不同指的是集合s1相對於集合s2,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素組成的新集合

十、運算符判斷集合間關系和issuperset、issubset的用法

集合可以使用大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=)來判斷某個集合是否完全包含於另一個集合,也可以使用子父集判斷函數。

issuperset     集合st1是否是集合st2的父集

issubset     集合st1是否是集合st2的子集

十一、不可變集合frozenset的用法

frozenset     該集合中的內容是不可改變的,其他功能及操作跟可變集合set一樣

E. python中set的使用

最簡單一句話:set是無序的,不支持切片

str(sorted(set(r_james))[0:3]))

sorted先進行排序並返回一個列表,對列表進行切片。。而樓主更改過後,直接對set進行切片,set是無序的,不支持切片

熱點內容
網頁上傳圖片不顯示 發布:2025-03-15 00:23:56 瀏覽:361
存儲晶元的片選 發布:2025-03-15 00:14:26 瀏覽:713
javastring參數 發布:2025-03-15 00:04:58 瀏覽:864
chrome腳本推薦 發布:2025-03-15 00:03:29 瀏覽:528
itunes如何切換賬號密碼 發布:2025-03-14 23:50:47 瀏覽:206
壓縮包上級目錄 發布:2025-03-14 23:42:09 瀏覽:100
華為解壓文件夾 發布:2025-03-14 23:41:21 瀏覽:925
易語言發簡訊源碼 發布:2025-03-14 23:38:24 瀏覽:567
編程教訓 發布:2025-03-14 23:30:34 瀏覽:478
山西dns伺服器地址 發布:2025-03-14 23:26:48 瀏覽:970