python set大小 python set集合

2021-10-11 22:21:53 字數 3092 閱讀 3466

集合set

可變的無序的

不重複的元素集合

set定義 初始化

set() 生成乙個空集合

set(iterable) 可通過可迭代物件生產乙個新的集合

s1 =set()

s2= set(range(5))

s3= set(list(range(10)))

s4= {} #這是字典的定義方法

s5 = #set

s6 =

s7= #set的元素要求必須可以hash 列表不能hash

set的元素要求必須可以hash

目前學過的不可hash的型別有list、set

元素不可以索引

set可以迭代

set增加

add(elem)

增加乙個元素到set中

如果元素存在,什麼都不做

update(*others)

合併其他元素到set元素中來

引數others必須是可迭代物件

就地修改

set刪除

remove(elem)

從set中移除乙個元素

元素不存在,丟擲異常keyerror異常

discard(elem)

從set中移除乙個元素

元素不存在,什麼都不做

pop() -> item

移除並返回任意的元素

空集返回keyerror異常

clear()

移除所有元素

集合基本概念

全集所有元素的集合。例如實數集,所有實數組成的集合就是全集

子集subset和超集superset

乙個集合a所有元素都在另乙個集合b內,a是b的子集,b是a的超集

真子集和真超集

a是b的子集,切a不等於b,a就是b的真子集,b是a的真超集

並集多個集合合併的結果

交集多個集合的公共部分

差集集合中除去和其他集合的公共部分

集合運算

並集將兩個集合a和b的所有元素合併在一起,組成的集合稱作集合a與集合b的並集

union(*others) 返回和多個元素合併後的新集合

| 運算子過載  等同union

update(*others) 和多個集合合併,就地修改

|= 等同update

交集集合a和集合b,由所有屬於a且屬於b的元素組成的集合

intersection(*others)  返回和多個集合的並集

& 等同於intersection

intersection_update(*others) 獲取和多個集合的交集,並就地修改

&= 等同於intersection_update

差集集合a和b,由所有屬於a切不屬於b的元素組成的元素

difference(*other) 返回和多個集合的差集

- 等同於difference

difference_update(*other)  獲取和多個集合的差集並就地修改

-= 等同於difference_update

對稱差集

集合a和b,由所有不屬於a和b的交集元素組成的集合,記作(a-b) u (b-a)

symmetric_difference(other) 返回和另乙個集合的差集

^ 等同於symmetric_difference

symmetric_difference_update(other) 獲取和另乙個集合的差集就地修改

^= 等同於symmetric_difference_update

issubset(other)、<=

判斷當前集合是否是另乙個集合的子集

set1 < set2

判斷set1是否是set2的真子集

issuperset(other)、>=

判斷當前集合是否是other的超集

set1 > set2

判斷set1是否是set的真超集

isdisjoint(other)

當前集合和另乙個集合沒有交集

沒有交集、返回true

集合應用

1、共同好友

你的好友a、b、c,他的好友b、c、d,求共同好友

.intersection()

並集,所有的群裡的人的好友形成乙個並集,userid in (a|b|c|...) ,使用者id不存在這個並集中,說明他和任何人都不是朋友

3、許可權判斷

有乙個api,要求許可權同時具備a、b、c才能訪問,使用者許可權是b、c、d,判斷使用者是否能訪問該api

api集合a,許可權集合p

a - p = {} , a-p為空集,說明p包含a

a.issubset(p) 也行,a是p的子集也行

a & p = a 也行

有乙個api,要求許可權具備a、b、c任意一項就可以訪問,使用者許可權b、c、d,判斷使用者是否能訪問該api

api集合a,許可權集合p

a & p != {} 就可以

a.isdisjoint(p) == false 表示有交集

4、乙個總任務列表,儲存所有任務。乙個完成的任務列表。找出為未完成的任務

業務中,任務id一般不可以重複

所有已完成任務id放到乙個set中,假設為completed,它是all的子集

all - completed = uncompleted

集合練習

隨機產生2組各10個數字的列表,如下要求:

每個數字取值範圍[10,20]

統計20個數字中,一共有多少個不同的數字  #交集

2組之間進行比較,不重複的數字有幾個?分別是什麼?  #對稱差集

2組之間進行比較,重複的數字有幾個?分別是什麼?  #並集

a = [1, 9, 7, 5, 6, 7, 8, 8, 2, 6]

b= [1, 9, 0, 5, 6, 4, 8, 3, 2, 3]

s1=set(a)

s2=set(b)print(s1) #去重

print(s2) #去重

print(s1.union(s2)) #並集 去重

print(s1.symmetric_difference(s2)) #對稱差集

print(s1.intersection(s2)) #交集

Python set例項透析

set是無序unique值的集合,常用來去重,檢驗membership等。set類似乙個詞典,但只有鍵key,沒有值value,好多操作也類似,但不支援索引,切片等操作。a set 1,2,3,1 b set 2,3,4 aprint bset 2,3,4 alen a 32 in atrue遍歷 ...

Python set 函式詳解

在python set是基本資料型別的一種集合型別,它有可變集合 set 和不可變集合 frozenset 兩種。建立集合set 集合set新增 集合刪除 交集 並集 差集的操作都是非常實用的方法。python set類是在python的sets模組中,大家現在使用的python2.7.x中,不需要...

python set 常用方法

1 add 2 clear 3 copy 淺拷貝 4 difference 判斷兩個set的不同,並且拿到他們的不同返回乙個新列表 5 differnce update 是將原來的set跟新,set.difference update eric blare 把與原來相同的剔除,不返回乙個新的set,...