Python 極簡教程(十一)集合 set

2021-09-27 21:04:46 字數 4368 閱讀 6275

集合(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...