python 基本資料型別 Set

2021-08-28 13:09:46 字數 3877 閱讀 4318

概念和基礎

集合(set),由乙個或多個確定的元素所構成的整體,是乙個無序不重複元素的序列,可以使用大括號{}或者set()函式建立集合,注意:建立空集合只能使用set(),如果使用{}建立的是乙個空字典,集合存在的意義就在於去重和關係運算。

建立格式:

param =

orparam =

set(value)

快速判斷元素是否在集合內使用可以使用in,如果存在的話返回true,否則返回false

e.g.

value in param

去重演示:

>>

>set_test =

set(

'hello'

)>>

>set_test

集合中的元素有三個特徵:

確定性(必須可雜湊)

互異性(去重)

無序性(集合中的元素沒有先後之分,集合和集合算是同乙個集合)

注意:集合存在的意義就在於去重和關係運算

set在建立的時候有可變集合和不可變集合兩種,可變集合set(value)或者直接,不可變集合可以通過將可變集合改為不可變集合,

e.g.

frozenset

(set_name)

關係運算

差集差集有差集和對稱差集之分,差集是只在某乙個集合中有,在另外乙個集合中沒有,對稱差集是兩個集合各自有的元素做並集並返回。

差集可以使用集合的difference()方法或者使用符號"-"。

e.g.

>>

>names1 =

>>

>names2 =

>>

>

print

(names1.difference(names2)

)#只在集合names1中存在的元素

>>

>

print

(names1 - names2)

#只在集合names1中存在的元素

對稱差集

按照對對稱差集的理解,可以通過對 set1 集合求對 set2 集合的差集,再並上 set2 集合對 set1 集合的差集,如下所示:

>>

>names1 =

>>

>names2 =

>>

>names1_names2 = names1.difference(names2)

#求對於names1對names2的差集

>>

>

print

(names2_names2)

>>

>names2_names1 = names2.difference(names1)

#求對於names2對names1的差集

>>

>

print

(names2_names1)

>>

>names1_names2 | names2_names1

這種方法比較繁瑣,需要對兩個集合一次求另乙個集合的差集,然後再求並集,python中直接提供了方法來實現對稱差集,可以使用集合的symmetric_difference()或者使用符號"^"。

>>

>names1 =

>>

>names2 =

>>

>

print

(names1.symmetric_difference(names2)

)#只在集合names1中存在的元素

>>

>

print

(names1 ^ names2)

#只在集合names1中存在的元素

交集

獲取兩個集合中重複的部分並返回,可以使用集合的intersection()方法,或者使用符號"&"。

e.g.

>>

>names1 =

>>

>names2 =

>>

>

print

(names1.intersection(names2)

)>>

>

print

(names1 & names2)

並集

獲取兩個集合中所有的元素並去重,可以使用集合的union()方法,或者使用符號"|"。

e.g.

>>

>names1 =

>>

>names2 =

>>

>

print

(names1.union(names2)

)>>

>

print

(names1 | names2)

常用操作

元素的增加

python 中元素的增加有兩種型別,一種的單個元素的新增,一種是對序列的新增。

單個元素的新增

>>

>set1 =

>>

>set1.add(3)

>>

>set1.add((4

,5))

序列的新增

python中對序列的新增使用的是update()方法,update()方法的作用類似於列表中的extend()方法,序列包括但不限於列表、元組和字典,update方法支援同時傳入多個引數。

>>

> set1 =

>>

> set1.update([3

,4],

[1,2

,7])

>>

> set1

>>

> set1.update(

"hello"

)#在update字串的時候比較特殊,是將每個字元拆開新增到集合中

>>

> set1

>>

> set1.update(

("hello"

,"world"))

元素的刪除

集合中刪除單個元素有三種方法,discard(),remove()和pop(),三者的區別:

清空集合的方法:clear(),就算是乙個空集合,清空的話也不會報錯

>>

> set1=

>>

> set1.discard(1)

>>

> set1

>>

> set1.discard(1)

#元素不存在,直譯器也沒有報錯

>>

> set1

>>

> set1.remove(1)

traceback (most recent call last)

: file ""

, line 1,in

set1.remove(1)

keyerror:

1>>

> set1.clear(

)>>

> set1

set(

)>>

> set1.pop(

)traceback (most recent call last)

: file ""

, line 1,in

set1.pop(

)keyerror:

'pop from an empty set'

>>

> set1.clear(

)

SET基本資料型別

在python set是基本資料型別的一種集合型別,它有可變集合 set 和不可變集合 frozenset 兩種。建立集合set 集合set新增 集合刪除 交集 並集 差集的操作都是非常實用的方法。set 不允許重複的集合 set不允許重複 的列表 簡單的演示下差集 交集和合集的概念 1 add 新...

Python基本資料型別之set

set是乙個無序且不重複的元素集合。集合物件是一組無序排列的可雜湊的值,集合成員可以做字典中的鍵。集合支援用in和not in操作符檢查成員,由len 內建函式得到集合的基數 大小 用 for 迴圈迭代集合的成員。但是因為集合本身是無序的,不可以為集合建立索引或執行切片 slice 操作,也沒有鍵 ...

Python基本資料型別 set的操作

car set car1 set car2 set 用於修改當前集合,可以新增新的元素或集合到當前集合中,如果新增的元素在集合中已存在,則該元素只會出現一次,重複的會忽略。update car set.update car1 set car set.update 林肯 car set.update ...