小牛叔讲Python第8章:集合大家一起的快乐
上一篇:小牛叔講Python第7章:循環(huán)與條件的愛恨情仇
下一篇:小牛叔講Python第9章:小牛叔講Python第9章:函數(shù)是你走過的套路
1、前言
凜東將至,瓊恩·雪諾當(dāng)上司令官命令山姆威爾去南方,到舊鎮(zhèn)學(xué)習(xí)成為一個(gè)學(xué)士再回黑城堡。山姆發(fā)現(xiàn)如要熟練在圖書館中查詢藏書,必須熟悉“列表”、“集合”、“元組”和“字典”4種數(shù)據(jù)組織形式。
2、列表list
圖書館所有書架上的藏書都是“列表”形式,為了幫助理解列表山姆記得小時(shí)候最開心的事情就是逛街。因?yàn)槔蠇寱?huì)給買最喜歡吃的糖葫蘆。竹簽可以把許多山楂串成串。列表處理數(shù)據(jù)與吃糖葫蘆其實(shí)很相似,:
上面兩種形式都是“列表”,特點(diǎn)如下:
- 元素有序。列表中的元素都是有順序的,可以通過下標(biāo)來定位。
- 可以編輯。列表變量中的元素可以被刪除、添加。
2.1 列表的定義
[元素0,元素1,...]
如上所示,列表中的元素是從0開始的。
如下代碼使用中括號(hào)和逗號(hào)分隔來定義列表中的內(nèi)容,如下定義了各種列表形式,比如:包括1,2,3,4,5五個(gè)整數(shù)的列表....
a=[1,2,3,4,5] #定義5個(gè)元素的列表 b=[] #定義了空的列表 c=['夜王前傳',1045,'龍晶使用方法',1056] #定義了書名頁數(shù) d=[['夜王前傳','龍晶使用方法'],[1045,1056]] #定了2個(gè)列表元素(書名列表、頁數(shù)列表)的列表定義完成可以通過如下的方式“取出數(shù)據(jù)”:
a[0] #表示第0個(gè)元素1 a[1] #表示第1個(gè)元素2 c[1] #表第第1個(gè)元素1045此外,還可以使用負(fù)數(shù)來倒著取元素,今天山姆的女友吉莉來看他了,提義兩個(gè)人玩撲克牌,我們定義一幅撲克可以這樣定義:
2.2 切片操作
列表在計(jì)算機(jī)中有如下的主流操作: 切片、刪除、彈出、添加。
切片就像在書柜(列表)中抽出中間一部分書本(元素),切片操作是這樣的,使用冒號(hào)分隔前后位置(重要:后面的位置是不被包括的),繼續(xù)之前定義我們看示例:
a=[1,2,3,4,5] #定義5個(gè)元素的列表 #形成新的列表[2,3] a[-4:-2] #形成新的列表[2,3] a[1:3]切片可以省略前后的數(shù)字,表示開始和結(jié)束,切片有好處就是不會(huì)產(chǎn)生“溢出錯(cuò)誤”,如下的代碼在計(jì)算時(shí)只返回空列表,而不會(huì)出錯(cuò):
#表示從第100位置開始到結(jié)束的切片,返回空 a[100:] #下面語句會(huì)產(chǎn)生溢出錯(cuò)誤 a[100]2.3 添加刪除操作
使用append動(dòng)作來添加元素至隊(duì)尾、使用del語句刪除元素、remove動(dòng)作刪除列表中某一個(gè)值(只能一個(gè)),如下所示:
列表.append(元素) #添加元素進(jìn)列表尾列表.remove(值) #刪除列表中的值一次
del 元素 #在內(nèi)存中刪除元素 a=[1,2,3,4,5] #定義5個(gè)元素的列表 del a[0] print('刪除a第0個(gè):',a) a.append(5) print('添加5,a:',a) a.remove(5) #只能刪除一次5 print('刪除數(shù)值5,a:',a)
運(yùn)行的結(jié)果如下:
刪除a第0個(gè): [2, 3, 4, 5] 添加5,a: [2, 3, 4, 5, 5] 刪除數(shù)值5,a: [2, 3, 4, 5]大家可能發(fā)現(xiàn),除了del語句比較特殊,其它append和remove動(dòng)作在運(yùn)行時(shí)都需要把列表變量放在小數(shù)點(diǎn)前,現(xiàn)在大家可以理解為這是列表的專門的動(dòng)作,這種寫法表示:調(diào)用列表class類的方法函數(shù),大家要記往。
del 語句是內(nèi)置命令,不光應(yīng)用于列表它表示在內(nèi)存中刪除銷毀對(duì)象,任何變量都可以被“銷毀”
2.4 插入彈出操作
彈出pop操作也是列表的專門的“方法”,表示從列表中的某個(gè)位置刪除對(duì)象,但是會(huì)同時(shí)返回這個(gè)對(duì)象,就好像子彈從彈匣中彈出來一樣。同樣插入insert操作也可以基于位置(前文remove是基于數(shù)值而不是位置)把新元素插入列表。
列表.pop(位置)#不寫就默認(rèn)最后一個(gè)列表.insert(位置,元素) #把元素插入位置當(dāng)中 a=[2,3,4,5,5] b = a.pop(3) print('彈出第3個(gè)元素,a:',a,',彈出了:',b) #第0個(gè)位置前插入字符“首” a.insert(0,'首') print('插入a:',a)
上面的代碼運(yùn)行結(jié)果如下圖:
彈出第3個(gè)元素,a: [2, 3, 4] ,彈出了: 5 插入a: ['首', 2, 3, 4]3、元組tuple
元組可看成是“只讀”的列表,它使用成對(duì)的圓括號(hào)()來定義,其中的元素都有0開始的位置,但只能讀取而不能添加和刪除其中的元素。這就類似于Sam在學(xué)院中看到的珍貴特定古籍書柜,柜中的書籍都是固定位置的,只能取閱而不能更新新的書籍進(jìn)來,也不允許把書籍抽走放在別處或是銷毀。
在Sam學(xué)院中把書籍位置使用(柜號(hào),行號(hào),列號(hào))的元組來表示,我們看示例:
#Sam學(xué)院中把書籍位置使用(柜號(hào),行號(hào),列號(hào))來表示 : book_a_loc = (1,23,34) book_b_loc = (5,10,90) print('a書位置:',book_a_loc) print('a書行列:',book_a_loc[1:]) print('b書行號(hào):',book_b_loc[1]) #試刪除第1個(gè)元素會(huì)出錯(cuò) del book_a_loc[0]運(yùn)行后的結(jié)果如下:
a書位置: (1, 23, 34) a書行列: (23, 34) b書行號(hào): 10 Traceback (most recent call last): File "/....../demo2.py", line 7, in <module> del book_a_loc[0] TypeError: 'tuple' object doesn't support item deletion錯(cuò)誤信息提示我們,tuple元組類型不支持元素刪除。
嘿嘿:Sam問道如果把列表加入元組呢,到底可編輯還是不可編輯?結(jié)論是這樣的,元組雖然不能編輯,但是其中作為元素的列表卻是可以編輯的。
具體交給讀者去試試吧!
4、集合set
在學(xué)院中有一些正在借閱當(dāng)中的書籍,通常被學(xué)士位亂堆在桌子上,也沒有順序,這種在python中沒有順序的元素集叫“集合”,我們定義空集合時(shí)使用set(),而不用{}因?yàn)榭栈ɡㄌ?hào)表示空的字典,我們定義集合時(shí)使用{元素1,....,}來表示。它有如下的特點(diǎn):
- 無序
- 不重復(fù)
在上面的定義當(dāng)中,我們有重復(fù)的男,但是打印出來只有2個(gè)值:
{'女', '男'}集合類型在數(shù)學(xué)上有交并差補(bǔ)運(yùn)算,同樣在python當(dāng)中也有運(yùn)算符分別是&|-^,具體示例如下圖:
n1 = {'張','王'} n2 = {'何','王'} print('合',n1&n2,'并',n1|n2,'差',n1-n2,'補(bǔ)',n1^n2)運(yùn)行結(jié)果如下:
合 {'王'} 并 {'何', '張', '王'} 差 {'張'} 補(bǔ) {'何', '張'}5、字典dict
就像Sam經(jīng)常使用的字典類書籍,Sam想查詞dragonglass(龍晶石)就從dragonglass索引去找內(nèi)容。python有一種數(shù)據(jù)結(jié)構(gòu)dict可以實(shí)現(xiàn)上述根據(jù)索引來查詢的功能,dict當(dāng)中的元素由冒號(hào)分隔的兩部分組成,前部分當(dāng)索引的叫關(guān)鍵字key(個(gè)人覺得叫鑰匙更形象),當(dāng)內(nèi)容的叫value(值)。
字典內(nèi)的元素沒有數(shù)字位置,只能通過關(guān)鍵字來獲得內(nèi)容。
#字典定義分隔符{},后可用回車 d = {'dragon':'一種古老的動(dòng)物','龍晶':'使用龍的骨骼形成化石晶體',} #查詢 龍晶 print('龍晶',d['龍晶']) #插入元素 d['丹尼莉絲'] = '坦格利安家族的風(fēng)暴降生丹尼莉絲坦格利安一世、不焚者、彌林女王、安達(dá)爾人和先民的女王、七國(guó)統(tǒng)治者暨全境守護(hù)者、草原上的卡麗熙、打碎鐐銬者以及龍之母!' #刪除dragon d.pop('dragon') #打印整個(gè)字典 print('d的內(nèi)容',d)運(yùn)行后,結(jié)果如下:
龍晶 使用龍的骨骼形成化石晶體 d的內(nèi)容 {'龍晶': '使用龍的骨骼形成化石晶體', '丹尼莉絲': '坦格利安家族的風(fēng)暴降生丹尼莉絲坦格利安一世、不焚者、彌林女王、安達(dá)爾人和先民的女王、七國(guó)統(tǒng)治者暨全境守護(hù)者、草原上的卡麗熙、打碎鐐銬者以及龍之母!'}通過對(duì)字典的熟練運(yùn)用,SAM找到了龍晶礦的所在地,他決定把這個(gè)消息告訴SNOW,幫助七國(guó)打贏夜王之戰(zhàn),關(guān)注后續(xù)發(fā)展哦。
上一篇:小牛叔講Python第7章:循環(huán)與條件的愛恨情仇
下一篇:小牛叔講Python第9章:小牛叔講Python第9章:函數(shù)是你走過的套路
恭喜你又進(jìn)步了一點(diǎn),關(guān)注并跟隨小牛叔,擺正編程入門姿式!
總結(jié)
以上是生活随笔為你收集整理的小牛叔讲Python第8章:集合大家一起的快乐的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5抠图,抠图放大招,5分钟解决白
- 下一篇: Python神笔马良案例集简介