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