1. 程式人生 > >python之set

python之set

情況 所有 並集 差集 pop 方式 lar trace 必須

一、set集合介紹

set集合,是一個無序的,且不重復的元素集合

定義方式使用"{}",也可以使用set(iterable)內置函數定義,但iterable參數只能是可叠代對象的對象

>>> set1 = {1,2,3,4,1,3}  #定義集合,默認會將重復的去掉
>>> set1
{1, 2, 3, 4}

>>> aa = abcde
>>> set2 = set(aa)  #使用set函數定義集合
>>> set2
{a, b, d, c, e}
>>> set3 = set(python) >>> set3 {y, p, o, h, n, t} >>> set2 = set(range(5)) #如果使用數字必須使用叠代序列 >>> set2 {0, 1, 2, 3, 4}

二、集合的方法

1、s.add()添加元素

>>> set2
{1, 2, 3, 4, 5}
>>> set2.add(6)
>>> set2
{1, 2, 3, 4, 5, 6}
>>> set2.add(addr) >>> set2 {1, 2, 3, 4, 5, 6, addr} 2、s.clear()情況所有元素 >>> set2 {1, 2, 3, 4, 5, 6, addr} >>> set2.clear() >>> set2 set()

3、s.copy()淺拷貝

>>> set1
{1, 2, 3, 4, 6, addr}
>>> set3=set1.copy()
>>> set3
{
1, 2, 3, 4, 6, addr}

4、s.difference(b)

返回兩個集合差集中s的元素

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.difference(set2)  #用set2比較set1時,返回set1和set2交集中set1剩余的元素
{1, 2}
>>> set2.difference(set1) #理解同上,返回自身集合中對方集合沒有的新集合
{5, 6}

5、s.difference_update(b)

從s集合中移除與b集合交集的元素,並更新到s集合

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.difference_update(set2)
>>> set1
{1, 2}
>>> set2.difference_update(set1) #沒有交集元素,所以不變
>>> set2
{3, 4, 5, 6}

6、s.discard(obj)

刪除指定元素,如不存在不會報錯

>>> set2
{3, 4, 5, 6}
>>> set2.discard(6)
>>> set2
{3, 4, 5}
>>> set2.discard(7)  #元素不存在,沒有報錯
>>> set2
{3, 4, 5}

7、s.intersection(b)

返回兩個或多個集合的交集,並返回

>>> set1 = {1,2,3,4}
>>> set2 = {3,4,5,6}
>>> set1.intersection(set2)  #返回交集值
{3, 4}
>>> set3 = {3,6,8,9}
>>> set1.intersection(set2,set3) #必須三個set都存在才返回
{3}

8、s.intersection_update(b)

根據當前s與比較b的交集值更新到s集合中

>>> set1 = {1,2,3,4,5,6}
>>> set2 = {3,4,5,7,8,9}
>>> set1.intersection_update(set2) #取交集值更新到自身set
>>> set1
{3, 4, 5}
>>> set2
{3, 4, 5, 7, 8, 9}

9、s.isdisjoint(b)

如果兩個集合沒有交集返回True否則返回False

>>> set1 = {1,2,3,4,5}
>>> set2 = {4,5,6,7,8}
>>> set1.isdisjoint(set2)
False
>>> set3 = {22,33}
>>> set1.isdisjoint(set3)
True

10、s.issubset(b)

s集合元素是否被b集合包含,是則返回True否則返回False

>>> s1 = {1,2}
>>> s2 = {1,2,3,4}
>>> s3 = {11,22}
>>> s1.issubset(s2)
True
>>> s1.issubset(s3)
False

11、s.issuperset(b)

判斷s集合元素是否包含了所以b的集合元素,是返回True否則返回False

>>> s1 = {1,2}
>>> s2 = {1,2,3,4}
>>> s2.issuperset(s1)
True
>>> s1.issuperset(s2)
False

12、s.pop()

集合默認排序後,隨機刪除一個元素,並返回該元素,默認刪除第一個元素

>>> s2 = {name,age,salary,shool}
>>> s2
{salary, name, shool, age}
>>> s2.pop()
salary
>>> s2.pop()
name
>>> s2.pop()
shool

13、s.remove(obj)

移除集合中的指定值,和discard一樣,只是remove在值不存在時會報錯。

>>> s1 = {1,2,3,4}
>>> s1.remove(2)
>>> s1
{1, 3, 4}
>>> s1.remove(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 5

14、s.symmetric_difference()

返回兩個集合的差集

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.symmetric_difference(s2)  #返回兩個集合不交集的元素
{1, 2, 5, 6}
>>> s2.symmetric_difference(s1)
{1, 2, 5, 6}

15、s.symmetric_difference_update(b)

將兩個集合不交集的元素返回給s

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 2, 5, 6}

16、s.union(b)

返回兩個集合的並集

>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6}

17、s.update(b)

以集合b擴展s集合

>>> s1 = {1,2,3}
>>> s2 = {4,5,6}
>>> s1.update(s2)
>>> s1
{1, 2, 3, 4, 5, 6}

python之set