set
和dict相似,也是一組key的集合,可是不存儲value。因爲key不能重複,set中沒有重複的key。
建立一個set
建立set須要提供一個list做爲輸入集合。
s = set( [1,2,3,4] )
或
li = [1,2,3,4]
s = set( li )
set內的list中的元素順序不表示set是有序的。
重複元素會被自動過濾。
添加元素到set中
add()
s.add('a')
list不能做爲元素添加到set,會報錯。由於list是可變對象。set與dict都不支持將可變對象做爲key。
刪除set中的元素
remove()
s.remove(4)
一次只能remove一個元素。
set能夠看作是一個數學意義上的集合,所以多個set之間能夠作數學意義上的交集並集操做。
>>> s1 = set( [1,2,4,8,10,28] )
>>> s2 = set( [2,4,6,8,10,12] )
>>> s1 & s2
{8, 2, 10, 4} #交集
>>> s1 | s2
{1, 2, 4, 6, 8, 10, 12, 28} #並集
不可變對象
在此先引入一個新函數 replace()
a='abc'
a.replace('a','A')
以前例子裏講,str、int等類型數據都是不可變對象,那麼,若是對這些不可變對象進行replace操做,這些對象是否是已經再也不「不可變」了呢?
>>> a = 'abc'
>>> a.replace('a','BBBBBB')
'BBBBBBbc'
實際上, replace以後,再進行print(a) ,會發現 對象(變量)a的值依然是 abc,也就是說,對象a實際上也是一個變量,只不過對象a指向的內容纔是str 'abc' , replace以後其實是新建了一個新的變量,能夠經過下面的邏輯來解釋這個現象:
>>> a ='abc' >>> print(a) abc >>> b = a.replace('a','HHHHH') >>> print(b) HHHHHbc >>> print(a) abc 因此,對於不可變對象來講,調用對象的任意方法都不會改變對該對象自身的內容,僅僅會建立新的對象並返回,這樣就保證了不可變對象自己是永遠不可變的。