1. 程式人生 > >pyhton3資料型別之set

pyhton3資料型別之set

一、建立一個集合(set)

初始化一個有三個元素的集合,set1 = {'a','n',9}
初始化無元素的集合 set2 = set(),和初始化一個空list不同,不能使用{},{}初始化的是一個沒有元素的字典(dict)
集合的特點是:無重複元素,不支援索引,和數學上定義的集合一樣

二、集合的常用操作

set1 = {‘a’, ‘c’, ‘b’}
set2 = {‘n’,’m’,’c’}

操作 描述 結果
set1 | set2 求兩個集合的並集 {‘m’, ‘b’, ‘n’, ‘c’, ‘a’}
set1 & set2 求兩個集合的交集 {‘c’}
set1 - set2 求兩個集合的差集 {‘a’, ‘b’}
set1 ^ set2 求兩個集合的對稱差集 {‘n’, ‘b’, ‘a’, ‘m’}
‘a’ in set1 判斷一個元素是否在集合中 True
‘a’ not in set1

三、集合的常用函式

函式 說明 描述
remove(object) 從集合中移除一個元素 移除的元素不在set中,會丟擲KeyError
pop() 從集合中隨機移除一個元素 如果set為空會丟擲KeyError
copy() 淺拷貝一個set 返回新的set
clean() 移除集合中所有元素 返回None
add(object) 給集合中新增一個元素 若元素已經存在集合中,該操作對集合無任何影響
difference(iterable) 求差集 引數為空或者必須是一個或多個可迭代的物件,否則會丟擲TypeError
difference_update(iterable) 求差集,並且用差集更新原來的集合 引數為空或引數為空或者必須是一個可迭代的物件,否則會丟擲TypeError
discard(elelmet) 移除集合中某個元素 如這個元素不存在,則不對集合做任何操作
intersection(iterable) 求交集 引數可以為空或者必須是一個可迭代的物件
intersection_update(iterable) 求交集並更新原set 返回None
isdisjoint(iterable) 交集的結果是空集合返回True
issubset(iterable) 判斷集合是否是另外一個集合的子集
issuperset(iterable) 判斷一個集合的是否是另外一個集合的父集
symmetric_difference(iterable) 求兩個集合的對稱差集 返回新set
symmetric_difference_update(iterable) 將兩個集合堆成差集更新掉原set 返回None
union(iterable) 求並集 返回新的set
update(iterable) 更新集合 返回None

測試:

if __name__ == '__main__':

    print(type({}))
    set1 = {'a', 'c', 'b'}
    set2 = {'n','m','c'}

    print(set1 | set2)
    print(set1 & set2)
    print(set1 - set2)
    print(set2 - set1)
    print(set1 ^ set2)

    print( 'a' not in set1)
    print( 'a' in set1)

    set1.remove('a')
    print(set1)

    print(set1.pop())
    print(set1)

    print(set1.copy())

    set1.clear()
    print(set1)

    set1.add('l')
    print(set1)

    set3 = {'d','c','l'}
    print(set3.difference(['m','c']))
    print(set3)

    print(set3.difference_update(['m','c']))
    print(set3)

    print(set3.discard('d'))
    print(set3)

    print(set2.intersection(set3))
    print(set2.intersection_update(set3))


    set4 = {'x','n','o'}
    print(set4.isdisjoint('l'))
    print(set4)

    print(set4.issubset({'x','n','m','o'}))

    print(set4.issuperset('o'))

    print(set4.symmetric_difference(['f','x']))
    print(set4)

    print(set4.symmetric_difference_update(['f','x']))
    print(set4)

    print(set4.union('123'))
    print(set4)

    print(set4.update('123','SDF'))
    print(set4)

測試的結果

<class 'dict'>
{'a', 'n', 'b', 'm', 'c'}
{'c'}
{'a', 'b'}
{'n', 'm'}
{'b', 'a', 'n', 'm'}
False
True
{'c', 'b'}
c
{'b'}
{'b'}
set()
{'l'}
{'d', 'l'}
{'d', 'l', 'c'}
None
{'d', 'l'}
None
{'l'}
set()
None
True
{'x', 'n', 'o'}
True
True
{'f', 'n', 'o'}
{'x', 'n', 'o'}
None
{'f', 'n', 'o'}
{'2', 'o', '1', '3', 'n', 'f'}
{'f', 'n', 'o'}
None
{'D', '2', 'S', 'o', '1', 'F', '3', 'n', 'f'}