Python 學習 4 容器物件及其使用

2021-10-01 20:38:56 字數 2979 閱讀 6821

在python中,成員有序排列的(此有序並非指排序),並且可以通過下標訪問到它的成員,稱為序列,包括:字串、列表、元組。本章將主要討論python中的容器物件,主要包含順序容器列表和元組、對映容器字典以及集合容器集合。字串將在下一章單獨學習。

順序容器基礎

長度為n的順序容器在通過下標訪問時有兩種方式:

對於順序容器所適用的操作符包括:

順序容器常見的內建函式包括:

運算函式

列表列表的形式是用方括號包起、逗號分隔元素。列表可以通過下標或者切片操作來訪問乙個或多個連續的元素,其中不僅可以包含python的標準型別物件,還可以包括自定義的類物件。與c/c++中陣列不同的是,python中列表可以包括不同型別的物件。

# 建立列表

alist=[1

,'abc'

,true

,4.3,[

1,2,

3]]# 訪問元素

print

(alist[0]

)#1print

(alist[0:

3])#[1,'abc',true]

# 更新元素

alist[0]

=100

false

)# 刪除元素

del alist[1]

alist.remove(

'abc'

)# 刪除列表

del alist

列表中的操作符:

列表中的內建函式:與序列容器內建函式不同,列表中還有:

list.count(obj):返回obj在列表**現的次數。

list.extend(seq):把序列seq的內容新增到列表中。

list.insert(index,obj):在索引量為index的位置插入obj。

list.pop(index=-1):刪除並返回指定位置的物件,預設為列表尾部。

list.index(obj):返回obj的位置,在使用前要確認物件是否在列表中,否則會報錯。

list列表的底層實現,個人理解比較類似於c++中的vector,有時間可以閱讀原始碼了解。cpython 元組

元組是和列表非常相近的另一種容器型別,元組與列表最直觀的區別就是,元組使用的是圓括號而列表是方括號。而在功能上,元組是不可變型別。

元組的建立與訪問都和列表相同。

元組中的元素不可改變,但可以通過運算子對整體的元組進行改變,例如+連線、*重複等。

元組沒有自己的內建函式,並且由於元組的不可變性,列表中的排序、替換、新增等函式都無法對元組實現。

不可變物件:數字、字串、元組。乙個資料型別是不可變的,意味著一旦乙個物件被定義了,那麼它的值就不能再更新,除非重新建立乙個新的物件。不可變並非是一件壞事,比如當資料傳給乙個不了解的api時,可以確保資料不會改變。

注意,在建立元組時發現,無法建立單元素的元組。這是因為圓括號被過載作為分組操作符,由圓括號包裹的單一元素首先被作為分組操作,而不是元組的分界符。那麼正確的方法應該是(『abc』,)來表示乙個單一元素的元組。

元組 vs 列表

元組和列表作為兩個相似的序列容器,經常會被問到「為什麼同時需要這兩個容器?」。首先不可變型別容器在維護一些敏感資料時,可以保證資料的一致性,在呼叫函式時不會被中途篡改。對於元組,則在需要管理動態資料集合時,可以不斷地向其中新增資料。實際上通過,list()和tuple()函式可以方便的在兩者之間進行轉換。

字典字典是python中惟一的對映型別。對映型別物件裡雜湊值(鍵)和指向的物件是一對多的關係。乙個字典物件是可變的,是乙個容器型別。與順序容器不同的是,對映型別中的資料是無序關聯的,無法通過下標訪問,需要通過鍵來對值進行訪問。

雜湊表:雜湊表是一種資料結構,簡單來說就是一種「」鍵——值對「(key——value)的儲存方式,例如「姓名:張三」,而雜湊的獨特之處在於,鍵是通過計算(雜湊函式/雜湊函式)得來,雜湊函式通常的形式包括除法求餘法、乘法雜湊法等等,例如除法求餘就是h(k)=k mod m,雜湊表幾乎在所有程式語言中都有重要的用處,需要理解清楚。

字典是通過花括號包裹,宣告的方法與列表等容器類似並且還有其他兩種方法:

# 建立字典(一)

d=# 建立字典(二)

d=dict((

['name'

,'zhangsan'],

['x',3

]))# 建立字典(三)通過內建函式fromkeys()建立乙個預設字典,字典的值都為none

d=.fromkeys(

('x'

,'y'))

#訪問字典的值

for key in d:

print

(d[key]

)print

(d['name'])

#刪除字典元素

del d[

'name'

]d.pop(

'name'

)#刪除字典

d.clear(

)del d

字典型別的操作符:

字典型別的內建函式:

字典型別內建方法:

字典中的值沒有任何限制,可以是任意python物件,但對於鍵是有限制的。

print列印字典時的小技巧:

在只需要列印字典值的情況下,可以通過格式化輸出%,例如

dic =

print

('%(a)s,%(b)s,%(c)s'

%(dic)

)# 1,2,3

集合是不同元素組成的集合,是一組無序排列的的可雜湊的值,即集合中的所有元素都可以作為字典的鍵。集合有兩種型別可變set和不可變集合fronzenset。集合現在已經成為python中的一種基本資料型別。集合在建立後會自動進行排序,有些類似c++中的set。

集合的建立:

集合型別的操作符:

集合型別的內建方法:

下一章將討論深拷貝與淺拷貝,字串容器以及與字串相關的正規表示式。第五章

Python 學習 3 數值物件及其使用

數字型別 在前一章講過,數字是不可更改的型別,也就是說變更數字會生成新的物件。python中支援多種數字型別 整型 長整型 布林型 雙精度浮點型 十進位制浮點型和複數。如何更新數字物件?如何刪除數字物件?整型python中可以表示整數的型別包括 布林型 整型 長整型 長整型所表示的數值大小遠超過c語...

docker學習 (4) 容器

docker的容器是基於映象的建立的,即在映象的基礎之上建立一層讀寫層,但是對於映象的沒有發生變化。docker容器是輕量級的,可以隨時建立和刪除。docker容器執行是當容器內的任務完成,容器也就終止執行。1 docker 容器的建立 docker create 映象名稱 可以直接建立乙個處於停止...

Python學習 「容器」

資料型別分為基本資料型別和組合資料型別,今天我們先來說一下組合資料型別。我們的組合資料型別分為列表 元組 集合 字典,我們接下來詳細的說一下這四個型別。舉例1 著名的nba球星有喬丹 科比 詹姆斯 庫里 杜蘭特,用列表表示 nba 喬丹 科比 詹姆斯 杜蘭特 庫里 舉例2 王者榮耀裡的 分別是6,2...