當前位置:首頁 » 編程語言 » 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是無序的,不支持切片

熱點內容
android獲取數組 發布:2025-08-22 02:24:04 瀏覽:645
徵型壓縮機 發布:2025-08-22 02:10:15 瀏覽:494
真空壓縮袋能上飛機嗎 發布:2025-08-22 02:10:01 瀏覽:94
怎麼刪除伺服器文件 發布:2025-08-22 02:04:07 瀏覽:168
爐石傳說威脅腳本投降 發布:2025-08-22 01:54:10 瀏覽:331
大大哇腳本 發布:2025-08-22 01:49:32 瀏覽:94
python2pip 發布:2025-08-22 01:48:56 瀏覽:388
php和null 發布:2025-08-22 01:48:49 瀏覽:964
安卓手機怎麼強制解鎖 發布:2025-08-22 01:48:48 瀏覽:81
安卓422怎麼樣 發布:2025-08-22 01:48:48 瀏覽:625