我們接下來要學(xué)習(xí)最后一個基本數(shù)據(jù)類型,集合。
集合也是用來存多個值的,但是它和字典、列表、元組有些不一樣,它存多個值不是為了取單個值出來使用的,主要是用來去重和做關(guān)系運算的。
你要存多個值方便以后取出來使用的話,你可以用字典。列表和元組,但是不要用集合。
首先我們來看怎么定義一個集合。
在大括號內(nèi)用逗號分隔開多個元素,注意我說的是用逗號分隔開多個元素,并沒有像以前學(xué)字典、列表和元組一樣,說的是任意類型的元素。這里說的多個元素就有一定的要求了。
它必須是不可變類型。看我定義一個集合。
s={1,2,3}
這都是不可變類型對吧,來打印一下。
我繼續(xù)再集合里面加一個列表,打印一下就直接報錯。
s = {1, 2, 3, [4, 5, 6]}
print(s)
然后還要注意的是,集合里面的元素是不能重復(fù)的,就算你定義的時候?qū)懥酥貜?fù)的元素但是它只會存一個。
還是上面的集合,然后在3的后面多加幾個3。打印一下。
打印結(jié)果還是1,2,3。新增加的這些重復(fù)3它并沒有幫我們存進去。
集合是無序的這點和字典一樣,字典無序它不能通過索引來取值,但是可以通過key來取值。集合無序也沒有key這個概念,也就意味著集合不能做取值操作。
這就是我們前面說的集合存多個值,不是為了取出單個值使用的,而是做為一個整體來去做重和關(guān)系運算的。
我現(xiàn)在索引取值,直接報錯。
s = {1, 2, 3, 3, 3, 3}
s[0]
說告訴我們,類型錯誤。后面的這段話你懂得話就用翻譯軟件翻譯一下。
說集合類型是不可下標(biāo)的,下標(biāo)其實就是索引。在其他語言里面叫下標(biāo)。
如果我就想把即合理的某一個元素取出來,怎么操作?
當(dāng)然也是可以實現(xiàn)的,集合也是可以被for循環(huán)遍歷的,既然可以被for循環(huán)遍歷那是不是也意味著它可以用list這個功能轉(zhuǎn)成列表。列表是可以按索引取值的。
s = {1, 2, 3, 3, 3, 3}
print(list(s))
好!這就是集合的特點,只能存可變類型、無序且不可重復(fù)。
還有有一點需要注意的是,由于定義集合是用大括號定義,而我們定義字典也是用大括號定義,所以我們要傳一個空集合的話,就必須用set加括號,而不是直接寫一對大括號。
a = set()
b={}
print(type(a),type())
我直接寫一個空的大括號,打印出來的類型是一個空字典。而set加括號這個功能,也是我們用大括號定義合計的時候背后觸發(fā)的功能。
同時它也可以做類型轉(zhuǎn)換,也是可以把能進行for循環(huán)的類型轉(zhuǎn)成集合類型。類型轉(zhuǎn)換我就不再演示了,前面字典、列表、字符串的時候已經(jīng)演示過很多次了。
但是轉(zhuǎn)換的時候要注意,和只能存不可變類型,而且不可重復(fù),如果你轉(zhuǎn)換前的類型里面有可變類型,是轉(zhuǎn)不了的,和上面一樣直接報錯。
如果轉(zhuǎn)換前有重復(fù)的元素,轉(zhuǎn)換后只能保留一個。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 集合類型1