Python中的集合,和數(shù)學(xué)中的集合概念一樣,用來保存不重復(fù)的元素,即集合中的元素都是唯一的,互不相同。

從形式上看,和字典類似,Python集合會(huì)將所有元素放在一對(duì)大括號(hào){}中,相鄰元素之間用“,”分隔,如下所示:
{element1,element2,...,elementn}1復(fù)制代碼類型:[python]其中,elementn表示集合中的元素,個(gè)數(shù)沒有限制。
從內(nèi)容上看,同一集合中,只能存儲(chǔ)不可變的數(shù)據(jù)類型,包括整形、浮點(diǎn)型、字符串、元組,無法存儲(chǔ)列表、字典、集合這些可變的數(shù)據(jù)類型,否則Python解釋器會(huì)拋出TypeError錯(cuò)誤。比如說:
>>> {{'a':1}} Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> {{'a':1}} TypeError: unhashable type: 'dict' >>> {[1,2,3]} Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> {[1,2,3]} TypeError: unhashable type: 'list' >>> {{1,2,3}} Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> {{1,2,3}} TypeError: unhashable type: 'set'123456789101112131415復(fù)制代碼類型:[python]并且需要注意的是,數(shù)據(jù)必須保證是唯一的,因?yàn)榧蠈?duì)于每種數(shù)據(jù)元素,只會(huì)保留一份。例如:
>>> {1,2,1,(1,2,3),'c','c'} {1, 2, 'c', (1, 2, 3)}12復(fù)制代碼類型:[python]由于Python中的set集合是無序的,所以每次輸出時(shí)元素的排序順序可能都不相同。
其實(shí),Python中有兩種集合類型,一種是set類型的集合,另一種是frozenset類型的集合,它們唯一的區(qū)別是,set類型集合可以做添加、刪除元素的操作,而forzenset類型集合不行。本節(jié)先介紹set類型集合,后續(xù)章節(jié)再介紹forzenset類型集合。
Python創(chuàng)建set集合Python提供了2種創(chuàng)建set集合的方法,分別是使用{}創(chuàng)建和使用set()函數(shù)將列表、元組等類型數(shù)據(jù)轉(zhuǎn)換為集合。
1)使用{}創(chuàng)建
在Python中,創(chuàng)建set集合可以像列表、元素和字典一樣,直接將集合賦值給變量,從而實(shí)現(xiàn)創(chuàng)建集合的目的,其語法格式如下:
setname = {element1,element2,...,elementn}1復(fù)制代碼類型:[python]其中,setname表示集合的名稱,起名時(shí)既要符合Python命名規(guī)范,也要避免與Python內(nèi)置函數(shù)重名。
舉個(gè)例子:
a = {1,'c',1,(1,2,3),'c'} print(a)12復(fù)制代碼類型:[python]運(yùn)行結(jié)果為:
{1, 'c', (1, 2, 3)}1復(fù)制代碼類型:[python]2)set()函數(shù)創(chuàng)建集合
set()函數(shù)為Python的內(nèi)置函數(shù),其功能是將字符串、列表、元組、range對(duì)象等可迭代對(duì)象轉(zhuǎn)換成集合。該函數(shù)的語法格式如下:
setname = set(iteration)1復(fù)制代碼類型:[python]其中,iteration就表示字符串、列表、元組、range對(duì)象等數(shù)據(jù)。
例如:
set1 = set("c.biancheng.net") set2 = set([1,2,3,4,5]) set3 = set((1,2,3,4,5)) print("set1:",set1) print("set2:",set2) print("set3:",set3)123456復(fù)制代碼類型:[python]運(yùn)行結(jié)果為:
set1: {'a', 'g', 'b', 'c', 'n', 'h', '.', 't', 'i', 'e'} set2: {1, 2, 3, 4, 5} set3: {1, 2, 3, 4, 5}123復(fù)制代碼類型:[python]注意,如果要?jiǎng)?chuàng)建空集合,只能使用set()函數(shù)實(shí)現(xiàn)。因?yàn)橹苯邮褂靡粚?duì){},Python解釋器會(huì)將其視為一個(gè)空字典。
Python訪問set集合元素由于集合中的元素是無序的,因此無法向列表那樣使用下標(biāo)訪問元素。Python中,訪問集合元素最常用的方法是使用循環(huán)結(jié)構(gòu),將集合中的數(shù)據(jù)逐一讀取出來。
例如:
a = {1,'c',1,(1,2,3),'c'} for ele in a: print(ele,end=' ')123復(fù)制代碼類型:[python]運(yùn)行結(jié)果為:
1 c (1, 2, 3)1復(fù)制代碼類型:[python]由于目前尚未學(xué)習(xí)循環(huán)結(jié)構(gòu),以上代碼初學(xué)者只需初步了解,后續(xù)學(xué)習(xí)循環(huán)結(jié)構(gòu)后自然會(huì)明白。
Python刪除set集合和其他序列類型一樣,手動(dòng)函數(shù)集合類型,也可以使用del()語句,例如:
a = {1,'c',1,(1,2,3),'c'} print(a) del(a) print(a)1234復(fù)制代碼類型:[python]運(yùn)行結(jié)果為:
{1, 'c', (1, 2, 3)} Traceback (most recent call last): File "C:\Users\mengma\Desktop\1.py", line 4, in <module> print(a) NameError: name 'a' is not defined12345復(fù)制代碼類型:[python]Python set集合最常用的操作是向集合中添加、刪除元素,以及集合之間做交集、并集、差集等運(yùn)算。受到篇幅的限制,這些知識(shí)會(huì)放到下節(jié)進(jìn)行詳細(xì)講解。
開課吧廣場-人才學(xué)習(xí)交流平臺(tái)
logo設(shè)計(jì)網(wǎng)(www.just4love.cn),專業(yè)的logo免費(fèi)設(shè)計(jì)在線生成網(wǎng)站,全自動(dòng)智能化logo設(shè)計(jì),商標(biāo)設(shè)計(jì),logo在線生成!
歡迎使用logo設(shè)計(jì)網(wǎng)制作屬于您公司自己的logo,不僅專業(yè)而且經(jīng)濟(jì)實(shí)惠,全方位滿足您公司品牌化、視覺化的需求。