pyhton3資料型別之set
阿新 • • 發佈:2019-01-13
一、建立一個集合(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'}