python內建型別

2021-09-29 08:08:38 字數 1560 閱讀 3590

元組:不可變,所以是可雜湊的

列表:實質上可被認為是長度可變的陣列(cpython),是由對其他物件的引用組成的連續陣列。指向這個陣列的指標及長度被儲存在列表的頭結構中。但是,python在建立列表的時候會採用指數過分配,使得新增或取出元素的平坦複雜度小。

列表推導式:解析器在對列表推導求值的時候並不知道最終容器的大小,也就無法預先分配,因此內部陣列的重新分配方式與for 迴圈一樣

複製o(n)

插入o(n)

新增o(1)

遍歷o(n)

修改o(1)

刪除o(n)

列舉(enumerate):獲取索引

zip()函式:合併多個列表(或可迭代物件)

對zip函式返回的結果再次呼叫zip(),可以恢復原狀。

序列解包:不適用於元組`

x,y,z=1,

2,3#x=1,y=2,z=3

x,y,

*z=1,2

,3,4

#x=1,y=2,z=[3,4] (帶星號的表示式會獲取單個變數的多個元素)

字典:將唯一鍵對映到對應值

在pyhon3中,keys(),values(),items()不再像python2中返回的是列表,也沒有python2中的iterkeys(),itervalues(),iteritems()返回的是迭代器,二十返回檢視物件

檢視物件既有舊方法返回列表的特性,又有返回迭代器的特性,無需將所有值存在記憶體中,並且檢視物件也是可迭代的。

字典細節:

cpython使用偽隨機探測的雜湊表作為字典的底層結構。實現這一細節的關鍵在於只有可雜湊的物件(乙個物件在生命週期內都不變的雜湊值,而且這個值可以用來與其他物件比較)才能作為字典的值。在python中,所有不可變的內建型別都是可雜湊的。雜湊協議包括兩個方法:

__hash__:給出dict內部實現需要的雜湊值,使用者自定義型別由id給出

__eq__:比較兩個物件的值是否相等,使用者自定義型別除自身外預設位不相等

如果不相等的兩個物件的雜湊值相等,即發生了雜湊衝突(cpython開放定址法)

可使用collection模組的ordereddict來有序字典

集合:元素的唯一性(cpython中集合被實現為帶有空值的字典)

在python中的集合型別有兩種:

set()

:可變的,無序的,有限的集合,可雜湊,不能作為其他set

()和frozenset

()的元素

frozenset

():不可變的,可雜湊,無序的,可作為字典的鍵,也可作為其他set

()和frozenset

()的元素

建立可變集合的方法:

①呼叫set()

②使用集合推導:

③使用集合字面值

`

python內建型別 python列表內建型別方法

列表操作方法 對列表l操作 例如list range 1,5 即 list 1,2,3,4 不含最後乙個元素 list range 1,10,2 即 list 1,3,5,7,9 在列表末尾新增新的物件 2 list.count obj 統計某個元素在列表 現的次數 3 list.extend se...

python內建型別

python直譯器中主要內建型別有數字 序列 對映 類 例項和異常。有三種基本序列型別 list,tuple和range 通用序列操作 大多數序列型別,包括可變型別和不可變型別都支援下表中的操作。此表按優先順序公升序列出了序列操作,在 中,s和t是具有相同型別的序列。n i j和k是整數而x是任何滿...

python內建物件型別

python內建物件型別 有 數字,字串,列表,元組,字典,集合等 pickle醃製 為了達到對一些物件進行持久化的儲存,並且不丟這個物件的型別與資料,我需要對這個物件進行序列號,然後存在記憶體或者存在第三方檔案,然後序列號的過程就叫醃製 例項 import pickle 匯入模組 lista na...