01 如何選擇合適的數據結構?為什么這很重要?
編程語言中的數據結構是用來整理和存儲數據。數據結構自身內部就定義了很多方法用來處理數據,不同的數據結構擁有不能的優勢,這篇文章就大概的過一遍Python中非常重要的數據結構。
首先,一定要明確一點,數據結構的選擇是基于對數據和項目最終目的的整體考量。不合適的數據結構可能會導致更長的處理時間、更多的內存占用等等。
02 Python中的數據結構
Python中用途最廣泛的數據結構有以下幾種:
- tuple
- str
- range
- list
- dict
- set
我們一起來過一遍tuple和set使用方法吧!
tuple 元組
tuple這個數據結構是被小括號包圍的一組數據,并且它有一個重要的屬性,一旦被定義,不可以被更改。
tuple元組的定義
圖1
如圖1所示,我們定義了兩個變量a和b,至于區別只是b的數據后面加了一個逗號。如果不加逗號,a的 數據類型被定義成了整數型。加了逗號,Python則會默認將數據類型設置為tuple。在圖2中,展示了幾種常用的定義tuple的方法。
圖2
tuple內數據的調用
圖3
len()函數可以返回tuple數據結構中一共有多少個數據,我們注意到tuple數據結構中并不需要所有的數據格式是一樣的。使用print()將tuple元組的數據個數打印出來,并且通過a[i]的形式調用每一個數據。
a[i]中的下標i是從0開始的,也就是說a中的1,2,‘逃學博士’分別對應的下標為0,1,2。
tuple數據一旦創建,無法更改
繼續拿a舉例,如果我們想要改變tuple a中的數據,比方說a[0],我們是不是可以這么做呢?
圖4
我們試圖將數值5賦值給a[0],但是系統報錯顯示tuple不支持賦值,也就是a[0]無法被修改。這也是tuple最重要的屬性之一,tuple的好處就是數據安全性高。
tuple數據一旦創建,真的不能修改嗎?
其實,tuple的數據無法修改也不是百分之百的。如圖5
圖6
a中的最后一個數據為list,a[2][0]則會指定為‘逃學博士’。如果對a[2][0]進行賦值,我們發現tuple 元組a的數據變了。原因在于我們無法直接賦值給a[2],因為a[2]是元組a的數據。但是,a[2]是一個list,而list的數據是可以被修改的,因此調用a[2][0]是可以直接修改list里面的內容。
集合 set
集合set是用大括號將數據包裹起來,如圖7所示。
圖7
那么,集合set最重要的屬性是什么呢?集合set中是無法包含重復的數據。如圖8,我們先定義一個list [1, 2, 3, 4, 1, 2, 3]。其中1, 2, 3是重復出現的。如果有一個項目需要我們去查找這個數據中一共出現的多少個數據,不包括重復的,就可以用到set集合了。
圖8
向集合set中添加和刪除數據是被允許的。添加數據使用add()函數,刪除函數使用remove()函數。
圖9
圖9中,我們給集合b添加了兩次數據5。但是,由于set無法擁有兩個重復的數據。因此,第二次被忽略了,而且系統不會報錯。
圖10
調用remove()函數,我們第一次調用去掉了集合b中的數字5。但是第二次調用remove()系統顯示報錯,這是因為集合b中這時候已經沒有我們要去除的5了。
總結
數據結構還有很多,集合set和元組tuple中的調用方法也還有很多。這篇文章想說的是幾個要注意的比較有意思的點。謝謝大家耐心的看完。