set 顧明思義,就是個(gè)集合,集合的元素是唯一的,無序的。一個(gè){ }里面放一些元素就構(gòu)成了一個(gè)集合,
set里面可以是多種數(shù)據(jù)類型(但不能是列表,集合,字典,可以是元組)
set 的創(chuàng)建:
>>> L1 = [1,1,2,4,3]
>>> T1 = (2,4,6,6,6,7)
>>> s = {1}
>>> type(s)
<class 'set'>
>>> s = set(L1) #從列表到集合
>>> s
{1, 2, 3, 4}
>>> s = set(T1) #從tuple到set
>>> s
{2, 4, 6, 7}
>>> s = {1,2.3,'a'}
set 基本函數(shù)與操作:
s.add( x )
將元素 x 添加到集合s中,若重復(fù)則不進(jìn)行任何操作
>>> s = {1,2,'a'}
>>> s.add('b')
>>> s
{1, 'a', 2, 'b'}
>>> s.add(1)
>>> s
{1, 'a', 2, 'b'}
s.update( x )
將集合 x 并入原集合s中,x 還可以是列表,元組,字典等,x 可以有多個(gè),用逗號(hào)分開
>>> s
{1, 'a', 2, 'b'}
>>> s.update({1,3})
>>> s
{1, 'a', 3, 'b', 2}
>>> s.update([1,4])
>>> s
{1, 'a', 3, 4, 'b', 2}
>>> s.update(1)
Traceback (most recent call last):
File "<pyshell#264>", line 1, in <module>
s.update(1)
TypeError: 'int' object is not iterable
s.discard( x )
將 x 從集合s中移除,若x不存在,不會(huì)引發(fā)錯(cuò)誤
>>> s
{1, 'a', 3, 4, 'b', 2}
>>> s.discard(1)
>>> s
{'a', 3, 4, 'b', 2}
>>> s.discard(1)
>>> s
{'a', 3, 4, 'b', 2}
s.remove( x )
將 x 從集合s中移除,若x不存在,會(huì)引發(fā)錯(cuò)誤
>>> s
{'a', 3, 4, 'b', 2}
>>> s.remove('a')
>>> s
{3, 4, 'b', 2}
>>> s.remove('a')
Traceback (most recent call last):
File "<pyshell#273>", line 1, in <module>
s.remove('a')
KeyError: 'a'
s.pop()
隨機(jī)刪除并返回集合s中某個(gè)值,注意,因?yàn)閟et是無序的,不支持下標(biāo)操作,沒有所謂的最后一個(gè),pop()移除隨機(jī)一個(gè)元素,這和其他數(shù)據(jù)結(jié)構(gòu)不同
>>> s
{3, 4, 'b', 2}
>>> s.pop()
3
s.clear()
清空
len(s)
set支持len操作
>>> s = {1,2,3}
>>> len(s)
3
in
set同樣支持in操作
>>> s
{4, 'b', 2}
>>> 1 in s
False
>>> 2 in s
True
s.union( x )
返回s與集合x的交集,不改變?cè)蟬,x 也可以是列表,元組,字典。
>>> s1 = {1,2,3}
>>> s2 = {'a','b'}
>>> s1.union(s2)
{1, 2, 3, 'a', 'b'}
>>> s1
{1, 2, 3}
s.intersection( x )
返回s與集合x的并集,不改變s, x 也可以是列表,元組,字典。
>>> s1
{1, 2, 3}
>>> s2
{2, 3, 4}
>>> s1.intersection(s2)
{2, 3}
>>> s1
{1, 2, 3}
s.difference( x )
返回在集合s中而不在集合 x 中的元素的集合,不改變集合s, x 也可以是列表,元組,字典。
>>> s1
{1, 2, 3}
>>> s2
{2, 3, 4}
>>> s1.difference(s2)
{1}
>>> s1
{1, 2, 3}
s.symmetric_difference( x )
返回s和集合x的對(duì)稱差集,即只在其中一個(gè)集合中出現(xiàn)的元素,不改變集合s, x 也可以是列表,元組,字典。
>>> s1
{1, 2, 3}
>>> s2
{2, 3, 4}
>>> s1.symmetric_difference(s2)
{1, 4}
>>> s1
{1, 2, 3}
s.issubset( x )
判斷 集合s 是否是 集合x 子集
s.issuperset( x )
判斷 集合x 是否是集合s的子集
>>> s1 = {1,2,3}
>>> s2 = {1,3}
>>> s2.issubset(s1)
True
>>> s1.issubset(s2)
False
>>> s1.issuperset(s2)
True
求交集,并集,差集,對(duì)稱差集的另一種方法:
>>> s1 = {1,2,3,'a'}
>>> s2 = {3,4,'b'}
>>> s1 & s2 #交集
{3}
>>> s1 | s2 #并集
{1, 'a', 3, 4, 'b', 2}
>>> s1 - s2 #差集
{1, 'a', 2}
>>> s1 ^ s2 #對(duì)稱差集
{1, 2, 4, 'b', 'a'}
{ } 在布爾運(yùn)算中表示 False,其他均為 True