數據類型(集合)

集合(set){}
       空的時候是默認爲字典,有值就是集合
python

數學概念:由一個或多個肯定的元素所構成的總體叫作集合。app

特徵iphone

1.肯定性(元素必須可hash)測試

2.互異性(去重)spa

3.無序性(集合中的元素沒有前後之分),如集合{3,4,5}和{3,5,4}算做同一個集合。code

做用:blog

去重 把一個列表變成集合,就自動去重了ip

關係測試 測試兩組數據之間的交集、差集和並集rem


關係運算數學

&.&=:交集

iphone7 = {"lily","jack","peiqi","shanshan"}
iphone8 = {"rose","nicole","lily","shanshan","lucy"}
print(iphone7 & iphone8)#交集  

輸出

{'lily', 'shanshan

|,|=:並集

|
set1.union(set2)

iphone7 = {"lily","jack","peiqi","shanshan"}
iphone8 = {"rose","nicole","lily","shanshan","lucy"}
print(iphone7|iphone8)#並集
#or
print(iphone7.union(iphone8))#並集

  輸出

{'nicole', 'lucy', 'shanshan', 'peiqi', 'lily', 'rose', 'jack'}
{'nicole', 'lucy', 'shanshan', 'peiqi', 'lily', 'rose', 'jack'}

-,-=:差集 (只iphone7,而沒有iphone8)

set1.difference(set2)

iphone7 = {"lily","jack","peiqi","shanshan"}
iphone8 = {"rose","nicole","lily","shanshan","lucy"}
#print(iphone7 - iphone8)#差集
#or
print(iphone7.difference(iphone8))

  輸出

{'jack', 'peiqi'}

 
 

^,^=:對稱差集(只iphone7oriphone8)

^

set1.symmetric_difference(set2

iphone7 = {"lily","jack","peiqi","shanshan"}
iphone8 = {"rose","nicole","lily","shanshan","lucy"}
print(iphone7^iphone8)#對稱差集
#or
print(iphone7.symmetric_difference(iphone8))#對稱差集

  輸出

{'nicole', 'rose', 'lucy', 'jack', 'peiqi'}
{'nicole', 'rose', 'lucy', 'jack', 'peiqi'}

包含關係

in,not in:判斷某元素是否在集合內
==,!=:判斷兩個集合是否相等

兩個集合之間通常有三種關係,相交、包含、不相交。在Python中分別用下面的方法判斷:

  • set1.isdisjoint(set2):判斷兩個集合是否是不相交
  • set1.issuperset(set2):判斷集合是否是包含其餘集合,等同於a>=b
  • set1.issubset(set2):判斷集合是否是被其餘集合包含,等同於a<=b
  • se1t.difference_update(set2) :把差集的結果賦給set1
  • set1.intersection_update(set2):把交集的結果賦給set1

集合的經常使用操做

列表(元組)轉成集合

l = [1,2,3,4,5,6,7,8]
print(type(l))
n = set(l)#轉成集合
print(type(n))

  輸出

<class 'list'>
<class 'set'>

增長

單個元素的增長 : set.add(),add的做用相似列表中的append

對序列的增長 : set.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錯誤  #想刪誰,括號裏寫誰

set.pop():因爲集合是無序的,pop返回的結果不能肯定,且當集合爲空時調用pop會拋出KeyError錯誤,

set.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()

相關文章
相關標籤/搜索