集合(set)是一種可變,無序和不重複的序列。集合是python的序列之一,集合沒有列表(list)、元組(tuple)和字典(ditc)常見。但是有時候也有奇效。
我們先來看個集合的例子:
>>
> s =
>>
>
type
(s)#
s =
就是乙個集合(set),資料型別就是set。
我們可以仔細觀察一下集合(set)的形態:
可以簡單的理解為就是沒有值(value)的字典(dict)。接下來我們來看下集合的基本操作。當然這是我說的,不夠準確,被人罵了不要來找我!
我們看如何建立集合:
建立乙個空的集合;
空集合的建立不能用以下這種形式
>>
> s =
# 這是乙個空字典,不是空集合
>>
>
type
(s)#
那要如何建立乙個空的集合呢?
>>
> s =
set(
)# 這是乙個空字典,不是空集合
>>
> s
# set()
>>
>
type
(s)#
我們可以看到要建立乙個空集合,要使用**s = set()
**這種方式。
建立非空的集合;
set()可以將任意一種序列變成集合
# 列表
>>
> li =
['a'
,'b'
,'c'
]>>
>
set(li)
# # 元組
>>
> t =(1
,2,3
)>>
>
set(t)
# # 字典
>>
> d =
>>
>
set(d)
# # 字串
>>
>
set(
'python'
)#
利用集合的不重複狀態,進行序列的去重
# 有重複元素的列表
>>
> li =
['a'
,'b'
,'c'
,'a'
,'c'
]>>
> s =
set(li)
# # 如果想去重後依然是列表,轉換一下
>>
> li =
list
(set
(li)
)>>
> li.sort(
)>>
> li
# ['a', 'b', 'c']
集合元素的新增有兩種常用方法,分別是add和update
>>
> s =
>>
> s.add(
'abc'
)#這裡會把'abc'當成乙個字串
>>
> s
#
集合中的元素不能是列表(list)、字典(dict)
>>
>s =
>>
> s.add([1
,2])
typeerror: unhashable type
:'list'
>>
> s.add(
)typeerror: unhashable type
:'dict'
update方法類似於列表相加,其中update的引數為序列。也就是把序列中的所有元素全部無序併排重後加入到集合中。
>>
> s =
>>
> s.update(
'xyz'
)#這裡會把'xyz'當成序列來處理,'x','y','z'分別是三個元素
>>
> s
#
集合元素的刪除方法
集合刪除操作方法有兩種:s.remove(『e』):刪除匹配的元素
s.pop():刪除第乙個元素,無法指定index,因為集合沒有index
# remove
>>
> s =
>>
> s.remove(
'a')
>>
> s
# # pop
>>
> s =
>>
> s.pop(
)# 'b'
>>
> s
#
通過集合的交集、合集(並集)、差集可以很方便的處理一些列表(list)
交集:
交集,符號「&」,表示兩個集合中相同的元素部分組成新的集合
# 交集 &
>>
> a =
set(
['a'
,'b'
,'c'])
>>
> b =
set(
['b'
,'d'
,'e'])
>>
> a & b
#
合集(並集)
合集(並集),符號「|」,表示兩個集合組合成乙個不重複的新集合(也就是重複部分會進行排重)
# 合集(並集) |
>>
> a =
set(
['a'
,'b'
,'c'])
>>
> b =
set(
['b'
,'d'
,'e'])
>>
> a | b
#
差集、相對補集
差集、相對補集, 符號「-」,如果 a - b 表示a集合中沒有在b集合中存在的元素,反之 b - a 表示b集合中沒有在a集合中存在的元素。可以用於取兩個集合中不相同的元素。
# 合集(並集) |
>>
> a =
set(
['a'
,'b'
,'c'])
>>
> b =
set(
['b'
,'d'
,'e'])
>>
> a - b
# >>
> b - a
#
其他
除開上面集中集合外,還有類似與列表(list)中的一些操作,如in,not in,!=,==等
# 不等於 !=
>>
> a != b
# true
# 等於 ==
>>
> a == b
# false
# 包含 in
>>
> a in b
# false
# 不包含 not in
>>
> a not
in b
# true
通過集合,我們可以方便快速的處理各種序列中的一些特殊操作。
排重,如果序列中存在重合的元素,可以通過集合方便的去重;
取兩個序列中相同的元素,通過將序列轉換為集合後,取交集即可;
將兩個序列合併,並且元素不重複,通過合集即可;
取兩個序列中不相同的部分,用差集即可。
本節練習:將列表 [5, 6, 7, 4, 5, 7] 中重複的元素去掉
求列表[2, 3, 5, 7, 9]和[2, 4, 5, 9, 8] 中的相同元素和不同元素
Python基礎入門(十一) 集合set
1 什麼是set 1 與dict 字典 區別 dict的作用是建立一組 key 和一組 value 的對映關係,dict的key是不能重複的。set 持有一系列元素,這一點和 list 很像,但是set的元素沒有重複,而且是無序的,這點和 dict 的 key很像。2 建立 set 的方式 呼叫 s...
Python 極簡教程(十)集合 set
什麼是集合?集合 set 是一種可變,無序和不重複的序列。集合是python的序列之一,集合沒有列表 list 元組 tuple 和字典 ditc 常見。但是有時候也有奇效。我們先來看個集合的例子 s type s s 就是乙個集合 set 資料型別就是set。我們可以仔細觀察一下集合 set 的形...
Python 極簡教程(十四)while 迴圈
迴圈簡單來說就是讓一段 按你想要的方式多次執行。軟體擁有強大的運算能力,就是由迴圈提供的。在 python 中支援的迴圈由兩種 while迴圈 和for迴圈。現在我們先來講while迴圈。while 的中文意思為當 的時候。顧名思義,當條件滿足的時候做什麼事情。來看看 while 語句的格式 whi...