數據類型(集合)
集合(set){}
空的時候是默認為字典,有值就是集合
數學概念:由一個或多個確定的元素所構成的整體叫做集合。
特征
1.確定性(元素必須可hash)
2.互異性(去重)
3.無序性(集合中的元素沒有先後之分),如集合{3,4,5}和{3,5,4}算作同一個集合。
作用:
去重 把一個列表變成集合,就自動去重了
關系測試 測試兩組數據之間的交集、差集和並集
關系運算
&.&=:交集
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} print(iphone7 & iphone8)#交集
輸出
{‘lily‘, ‘shanshan‘}
|,|=:合集,也叫並集——linux班和python班的所有同學
這裏同學們不可以單純的認為python班的人數+linux班的人數就是結果,如果兩班人數相加應該是6人。但學習Linux班的張三和李四還同時在python班學習,因此我們實際上總共只有四個學員。求並集除了合並效果之外還有去重功能
l= {‘張三‘,‘李四‘,‘老男孩‘}
p = {‘張三‘,‘李四‘,‘alex‘}
print(l.union(p))
print(l|p)
-,-=:差集
-
set1.difference(set2)set
(只iphone7,而沒有iphone8)
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} #print(iphone7 - iphone8)#差集 #or print(iphone7.difference(iphone8))
輸出
{‘jack‘, ‘peiqi‘}
^,^=:對稱差集——只在linux班或只在python班的同學
a = {1,2,3}
b = {2,3,4,5}
print(a.symmetric_difference(b))
print(a^b)
包含關系
in,not in:判斷某元素是否在集合內
==,!=:判斷兩個集合是否相等
兩個集合之間一般有三種關系,相交、包含、不相交。在Python中分別用下面的方法判斷:
- set.isdisjoint(s):判斷兩個集合是不是不相交
- set.issuperset(s):判斷集合是不是包含其他集合,等同於a>=b
- set.issubset(s):判斷集合是不是被其他集合包含,等同於a<=b
集合的常用操作
列表(元組)轉成集合
l = [1,2,3,4,5,6,7,8] print(type(l)) n = set(l)#轉成集合 print(type(n))
輸出
<class ‘list‘>
<class ‘set‘>
增加
單個元素的增加 : add(),add的作用類似列表中的append
對序列的增加 : update(),update方法可以支持同時傳入多個參數,將兩個集合連接起來:
s = {1,2} s.add(3)#單個增加 print(s) s.update([4,5],[3,6,7])#可以傳入多個數據 print(s)
輸出
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7}
刪除
set.discard(x)不會拋出異常
set.remove(x)會拋出KeyError錯誤 #想刪誰,括號裏寫誰
pop():由於集合是無序的,pop返回的結果不能確定,且當集合為空時調用pop會拋出KeyError錯誤,
clear():清空集合
s = {1,2,3,4,5,6,7,8,9} s.discard(10) print(s) s.discard(10)#刪除指定一個 print(s) s.pop()#隨機刪除一個 print(s) s.clear()#清空 print(s)
輸出
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{2, 3, 4, 5, 6, 7, 8, 9}
set()
數據類型(集合)