一、集合(set)類型的含義:
Set是一個無序不重複元素集,與列表和元組不同,集合是無序的,無法通過數字進行索引。
注意:下面所舉例子在Python3.6,IDE為pycharm2016.1中通過。
創建集合:用set()函數,或直接賦值。
例子:
x=set('Nike MM')
y=set(['w','a','m','a'])
print(x)
print(y)
輸出:
{'M', 'N', 'e', 'k', ' ', 'i'}
{'w', 'm', 'a'}
可以看到,在輸出中,是用一對{}号包住,裡面重複的元素被去除。
再看一個例子:
s={'11','22','33'}
print(s)
print(type(s))
s={}
print(type(s))
輸出:
{'33', '11', '22'}
<class 'set'>
<class 'dict'>
在定義不,不能用s={},這關創建的實際上是一個字典類型。
二、有關集合的操作:
1.增加操作
例子:
a=set('python')
a.add('why')
print(a)
b=set('python')
b.update('why')
print(b)
輸出:
{'n', 'p', 'y', 'h', 'o', 't', 'why'}
{'n', 'p', 'y', 'h', 'o', 'w', 't'}
可能看到:add是單個元素的添加,并沒有把元素再分拆為單個字符。Update是批量的增加,增加的元素如果是一個字符串(實際上,在Python中字符串也是一個系列),是作為一個系列增加的。在輸出結果中,兩個函數都是無序的,并且無重複,也非添加到尾部。
2.删除操作(remove,discard,pop)
例子1:
a=set('abcdefghijk')
a.remove('a')
print(a)
a.remove('w')
print(a)
輸出 :
Traceback (most recent call last):
{'h', 'k', 'e', 'd', 'g', 'c', 'f', 'i', 'b', 'j'}
File "D:/python/temp3.py", line 4, in <module>
a.remove('w')
KeyError: 'w'
例子2:
a=set('abcdefghijk')
a.discard('a')
print(a)
a.discard('w')
print(a)
輸出:
{'f', 'h', 'd', 'e', 'b', 'k', 'i', 'j', 'c', 'g'}
{'f', 'h', 'd', 'e', 'b', 'k', 'i', 'j', 'c', 'g'}
例子3:
a=set('abcdefghijk')
b=a.pop()
print(a)
print(b,type(b))
輸出:
{'k', 'd', 'h', 'c', 'b', 'j', 'g', 'i', 'e', 'f'}
a <class 'str'>
從以上例子可以看到,remove方法删除指定無素,如果要删除的元素的不在集合中,則報錯;discard方法删除指定元素,如果要删除物元素不在集合中,則不報錯,pop方法删除任意元素,并可将這個元素賦值給一個變量,但集合并沒有把這個元素移除。
3.清空(clear)
例子:
a=set('abcdefghijk')
a.clear()
print(a)
輸出:
set()
4.交集&,并集|,差集-,對稱差集^,子集(被包含)<=,父集(包含)>=
例子:
a=set(['a','b','c','d','e','f'])
b=set(('d','e','f','g','h','i'))
d=set('def')
print('交集:',a.intersection(b))
print('交集:',a & b)
print('并集:',a.union(b))
print('并集:',a | b)
print('差集:',a.difference(b))
print('差集:',a-b)
#對稱差集:
#把兩個集合中相同的元素去掉,然後
#兩個集合中剩下的元素組成一個新的集合
print('對稱差集:',a.symmetric_difference(b) )
print('對稱差集:',a ^ b )
print('子集:',a.issubset(d) )
print('子集:',a<=d )
print('父集:',a.issuperset(d) )
print('父集:',a>=d )
輸出:
交集: {'f', 'e', 'd'}
交集: {'f', 'e', 'd'}
并集: {'c', 'e', 'd', 'b', 'f', 'a', 'g', 'i', 'h'}
并集: {'c', 'e', 'd', 'b', 'f', 'a', 'g', 'i', 'h'}
差集: {'a', 'c', 'b'}
差集: {'a', 'c', 'b'}
對稱差集: {'a', 'c', 'g', 'b', 'i', 'h'}
對稱差集: {'a', 'c', 'g', 'b', 'i', 'h'}
子集: False
子集: False
父集: True
父集: True
5.集合的其它一些操作
a=set(['a','b','c','d','e','f'])
b=set(('d','e','f','g','h','i'))
d=set('def')
#如果a和d沒有交集,返回True,有則返回False
print(a.isdisjoint(d) ) 輸出:False
print(a<d) 輸出:False
print(a>d) 輸出:True
print(a!=b) 輸出:True
print(a.copy()) 輸出:{'f', 'e', 'b', 'a', 'd', 'c'} #複制一個集合
print('a' in a) 輸出:True #測試元素是否在集合中
print('a' not in a) 輸出:False #測試元素是否不在集合中
print(len(a)) 輸出:6 #返回集合的長度
6.集合計算:
(1)
#從a中減去a和b的交集,即從a集合中删除和b集合中相同的元素
a.difference_update(b) 即等于:a=a-b 或a-=b
print(a) 輸出:{'a', 'b', 'c'}
(2)
#修改a集合,僅僅保持a與b的交集,如果沒有交集,則a變為空集合set()
a.intersection_update(b) 即等于:a=a&b 或a&=b
print(a )
輸出:{'e', 'd', 'f'}
(3)
#a集合中增加‘在b集合中除去a和b交集剩下的元素’
a.symmetric_difference_update(b) 即等于:a=a^b 或 a^=b
print(a) 輸出:{'i', 'g', 'a', 'c', 'b', 'h'}
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!