概念和基礎
集合(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 ...