set 集合的概念 方法和操作

2021-08-05 20:08:05 字數 3546 閱讀 6366

額…..繼續整理筆記,set集合方法等,下次不用到處亂翻了..常見的應該就這些了吧……心虛…..
python中集合概念和數學中一致,由乙個或多個確定的元素構成的整體叫集合.

集合中元素是唯一的,無序的,集合中元素為不可迭代物件,即非列表和字典.

python 中 set 集合分為 可變集合set()和不可變集合frozenset()兩種

所以同樣,set中元素也不能為乙個set,但是可以是乙個frozenset

set() 建立(可變集合)
用{}表示,型別為set(),與字典不同的是集合set內部是單獨元素來表示,而非鍵值對的形式
>>> a = ('a', 'b', 'v')

>>> b = set(a) #tuple轉set

>>> b

>>> type(b)

>>> c = set

() #建立空集合

>>> type

(c)

新增元素
>>> b.add('bb')

>>> b

刪除元素
>>> b.remove('bb')

>>> b

將set b合併到set a中
>>> b

>>> a =

>>> a

>>> b.update(a) # 將set a合併到set b中

>>> b

# b變化

>>> a # a保持

與列表pop和字典popitem方法類似,效果都是移除其中元素並返回移除元素的值

由於set集合和dict字典類似都是無序的,並且set中只有值無key,所以移除時為隨機移除

>>> a

>>>b = a.pop()

>>>b

1>>>a

與列表和字典clear方法類似,效果都是清空內部元素,並保留空集合
>>> a.clear()

>>> a

set()

返回乙個淺複製副本
>>> e = a.copy()

>>> e

和remove方法一樣,都是移除set中的元素,

不同之處在於remove引數必須實際存在於set中,否則報錯

而discard方法中,引數存在則移除,不存在也不會報錯

>>> e

>>> e.discard(3) # 存在3則移除

>>> e

>>> e.discard(3) # 移除元素,即使不存在也不報錯

>>> e.remove(3) # 用remove移除不存在的元素,則報錯

traceback (most recent call last):

file "", line 1, in

keyerror: 3

顧名思義,不可變集合,就是不可更改的集合了,建立後就不可更改了,所以也就沒有各種方法了.因此,frozenset做為可雜湊物件,具有不可變特性,自然也就可以作為字典key

tag:

python中所有不可改變的的物件,如字串,元組tuple,不可變集合frozenset都是可雜湊的

同樣也就是說,可改變的容器如字典dict,列表list,可變集合set 則不可雜湊unhashable

>>> d = forzenset()  # 建立乙個空的不可變集合

>>> d

forzenset()

>>> d.add(1) # 不可修改,這裡就報錯了

traceback (most recent call last):

file "", line 1, in

attributeerror: 'frozenset' object has no attribute 'add'

>>> hash(d) # 做為乙個可雜湊的物件,擁有固定的雜湊值

133156838395276

>>> hash(b) # b是乙個set,是乙個可變集合,非固定,所以就沒有hash值了,同樣會提示報錯

traceback (most recent call last):

file "", line 1, in

typeerror: unhashable type: 'set'

和我們數學中學過的差不多,python中關於集合set的操作,一般有並集,交集,差集,對稱差集子集,超集等

union 或者 | (管道符)
>>> a = set([1,2,3])

>>> a

>>> b = set([3,4,5])

>>> b

>>> a.union(b) # 並集

>>> a|b # 符號簡寫形式

intersection 或者 & (and符)
>>> a.intersection(b)  #交集

>>> a & b #簡寫

difference 或者 - (減號)
>>> a.difference(b)  # a-b的差集

>>> b.difference(a) # b-a的差集

>>> a-b #簡寫

>>> b-a #簡寫

symmetric_dfifference 或者 ^ 符 即除去交集部分
>>> a.symmetric_difference(b)

>>> a^b

issubset 或 <
>>> d = 

>>> d.issubset(a)

true

>>> dtrue

issuperset 或 >
>>> a.issuperset(d)

true

>>> a>d

true

set集合方法

集合操作符 集合有四種基礎運算方法,並,交,差,補 s t 並運算,返回乙個新集合,包含在集合s和t中的所有元素 s t 交運算,返回乙個新集合,包含既在s中又在t中的集合 s t 差運算,返回乙個新的集合,包含在集合s中但是不在集合t中的元素 s t 補運算,返回乙個新集合,包含集合s和t中的不相...

python 集合概念set用法

python中set的用法 python 的集合型別和 其他語言類似,是乙個無序不重複元素集,我在之前學過的其他的語言好像沒有見過這個型別,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetricdiffere...

Set集合和Map集合的使用方法

set是乙個無序的 不重複的集合 它主要的特點就是不重複 主要用來去重 我們使用set集合的時候 需要new 也就是說他是乙個物件 1.使用 使用的時候 必須先進行例項化 可以傳遞乙個引數 引數是可選 如果傳遞引數 引數是陣列 返回的結果是set集合 去重之後的陣列 set集合 let arr 11...