python學習筆記24_集合set( )
python 筆記24
集合 set
集合是一個無序的,不重複的資料組合,它的主要作用如下:
- 去重,把一個列表變成集合,就自動去重了
- 關係測試,測試兩組資料之前的交集、差集、並集等關係
集合(set):把不同的元素組成一起形成集合,是python基本的資料型別。
集合元素(set elements):組成集合的成員(不可重複)
li=[1,2,'a','b']
s =set(li)
print(s)
輸出: {1, 2, 'a', 'b'}
li2=[1,2,1,'a','a']
s=set(li2)
print(s)
輸出: {1, 2, 'a'}
集合物件是一組無序排列的可雜湊的值:集合成員可以做字典的鍵。
但是可變集合整體卻是不可雜湊的。
li=[[1,2],'a','b']
s =set(li) #TypeError: unhashable type: 'list'
print(s)
這裡[1,2]是不可雜湊的,所以會報錯。
(回顧:列表和字典是不可雜湊的)
既然集合是無序的,那麼怎麼獲取資料呢?
方法一:放進for迴圈遍歷。
方法二:放進迭代器(後面會講)。
集合分類:可變集合、不可變集合
可變集合(set):可新增和刪除元素,非可雜湊的,不能用作字典的鍵,也不能做其他集合的元素
不可變集合(frozenset):與上面恰恰相反
li=[1,'a','b']
s =set(li)
dic={s:'123'}
輸出:
TypeError: unhashable type: 'set'
集合的相關操作
1、建立集合
由於集合沒有自己的語法格式,只能通過集合的工廠方法set()和frozenset()建立
s1 = set('alvin')
s2= frozenset('yuan')
print(s1,type(s1))
print(s2,type(s2))
輸出:
{'l', 'v', 'i', 'a', 'n'} <class 'set'>
frozenset({'n', 'y', 'a', 'u'}) <class 'frozenset'>
2、訪問集合
由於集合本身是無序的,所以不能為集合建立索引或切片操作,只能迴圈遍歷或使用in、not in來訪問或判斷集合元素。
s1 = set('alvin')
print('a' in s1)
print('b' in s1)
for i in s1:
print(i)
輸出:
True
False
i
a
n
v
l
3、更新集合
可使用以下內建方法來更新:
s.add() #加單個元素,寫什麼新增什麼
s.update() #加多個元素,把每個序列都新增進去
s.remove() #移除某個元素
注意只有可變集合才能更新:
s2=set('alvin')
s2.add('mm')
print(s2)
s2.update('HO')
print(s2)
s2.update([12,'Flamingo'])
# 新增列表也是講列表中的每個元素加進集合中,而不會將12分解成1和2,或將flamingo分解成f,l,a,m,i,n,g,o。
print(s2)
s2.remove('l')
print(s2)
輸出:
{'a', 'n', 'l', 'i', 'v', 'mm'}
{'a', 'H', 'n', 'l', 'i', 'O', 'v', 'mm'}
{'a', 'H', 12, 'n', 'Flamingo', 'l', 'i', 'O', 'v', 'mm'}
{'a', 'H', 12, 'n', 'Flamingo', 'i', 'O', 'v', 'mm'}
注意:s2.update(12,'Flamingo')這種寫法則是錯誤的。
4、刪除
s2.pop( ) #隨機刪除一個元素
s2.clear( ) #清空列表,保留集合這個容器
del s2 #刪除整個集合
集合型別操作符
1 in ,not in
2 集合等價與不等價(==, !=)
3 子集、超集
在瞭解集合相關操作符號之前,我們先明確一下數學概念:
父級子級判定
相關文章
- Python學習之set集合Python
- Java 集合學習筆記Java筆記
- Python零基礎學習筆記(二十二)——setPython筆記
- 【Java學習筆記】Collections集合Java筆記
- Python set(集合)Python
- leetcode學習筆記73 Set Matrix ZeroesLeetCode筆記
- 集合冪級數學習筆記筆記
- python-集合setPython
- Python學習筆記Python筆記
- 【學習筆記】python筆記Python
- Java中的Map集合學習筆記Java筆記
- Unity的Shader學習筆記(09)[20/12/24_週四][33-36]Unity筆記
- python 集合型別 setPython型別
- JAVA集合:常見Set原始碼學習Java原始碼
- redis 有序集合(sorted set)(redis學習七)Redis
- MySQL:MGR 學習(1):寫集合(Write set)MySql
- C++ 學習筆記(1):STL、Vector 與 SetC++筆記
- 封裝中的get、set方法-學習筆記封裝筆記
- ES6學習筆記之Set和Map筆記
- Java集合 Collection、Set、Map、泛型 簡要筆記Java泛型筆記
- python——Matplotlib學習筆記Python筆記
- python學習筆記4Python筆記
- Python學習筆記(三)Python筆記
- python——numpy學習筆記Python筆記
- python學習筆記(1Python筆記
- Python學習筆記 - queuePython筆記
- Python學習筆記 - asyncioPython筆記
- Python 學習筆記(一)Python筆記
- Python學習筆記 - aiohttpPython筆記AIHTTP
- python學習筆記(二)Python筆記
- Python學習筆記(2)Python筆記
- Effective Python學習筆記Python筆記
- Python3學習筆記2,基本資料型別-list、tuple、set、dictPython筆記資料型別
- Python學習筆記|Python之程式Python筆記
- 【廖雪峰python入門筆記】setPython筆記
- Python零基礎學習筆記(三十二)——list/tuple/dict/set檔案操作Python筆記
- ES6學習筆記(四)【正則,集合】筆記
- Python學習筆記——turtle庫Python筆記