python集合set與frozenset介紹

2022-08-31 20:45:09 字數 2085 閱讀 6180

集合是一種組合型的資料型別,分為可變的set和不可變的frozenset。

1、可變集合set

集合set是一種無序的、唯一的的元素集,與數學中集合的概念類似,可對其進行交、並、差、補等邏輯運算。不支援索引、切片等序列操作,但仍支援成員關係運算子in-not in、推導式等操作。在特定的場合中可以體現出非常優秀的執行效率。

下面分別介紹了集合的建立以及對集合中元素進行增添、刪除等修改操作。

#

通過以下這種方法建立集合

set() ->new empty set object

set(iterable) -> new set object #

iterable可以是string、tuple、list、dict、set

1#例子

2 set('

xyz') #

3 set((1, 2, 3)) #

4 set([1, 2, 3]) #

5 set() #

6 set() #7#

錯誤示範

8 set(1)

typeerror: '

int' object is

not iterable

1

#集合中元素唯一性

2 set([1, 1, 2, 2, 3, 3, 4, 3, '

a', '

b', '

c', '

a', '

b']) #3#

集合推導式

4 set(x**2 for x in range(1, 6)) #5#

由於set是乙個可變集合,可進行以下操作

6 s1 = set(range(5)) #7#

增加乙個元素

8 s1.add(5) #9#

刪除乙個集合中的元素,若集合中沒有該元素則返回錯誤

10 s1.remove(0) #11#

隨機刪除乙個元素,並返回刪除的元素

12 s1.pop() #113

#指定刪除集合中的乙個元素,若沒有這個元素,則什麼也不做

14 s1.discard(1) #

15 s1.discard('

a') #16#

清空集合中所有元素

17 s1.clear() #

set()

2、不可變集合frozenset

frozenset凍結集合,即不可變集合。frozenset的元素是固定的,一旦建立後就無法增加、刪除和修改。其最大的優點是使用hash演算法實現,所以執行速度快,而且frozenset可以作為dict字典的key,也可以成為其他集合的元素。

#

build an immutable unordered collection of unique elements.

frozenset() ->empty frozenset object

frozenset(iterable) -> frozenset object

1#例子

2 frozenset() #

frozenset()

3 frozenset([1, 2, 3, '

abc']) #

frozenset()4#

frozenset集合作為dic的key和value

5 f = frozenset([1,2,3])

6 d = #

): 'a'}

7 d2 = #)}8

#set集合不可以作為dic的key和value

9 f2 = set([1, 2, 3])

10 d3 = #

typeerror: unhashable type: 'set'

3、set、frozenset共有的內建函式

這裡主要包括集合與字串、列表、字典、集合之間的交集、並集、差集以及集合之間的關係,由於目前還未接觸很多,對此進行了詳細介紹,本文不再進行介紹。

Set集合與Map集合

一 set集合 無序 不能出現重複元素 沒有角標 的集合 1 直接列印system.out.println set 2 增強for迴圈foreach 3 迭代器遍歷iterator 特點 無序 set集合的無序 指的是與元素放入的順序無關 不能重複 每乙個set子類都有自己的元素查重規則 沒有角標 ...

python集合set操作

python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.sets 支援 x in set,len set ...

python學習 集合set

num type num num2 type num2 這兩個大括號的型別明顯不一樣 num的型別是字典而num2的型別則是集合 集合集合具有唯一性 num2 num2 集合不會列印重複的東西 集合不支援索引 num2 2 traceback most recent call last file l...