1. 程式人生 > >Python內置數據結構

Python內置數據結構

列表 索引 dex err 叠代 app list 對稱 復雜

內置數據結構

  • 可變
    1. list 列表
    2. byterray
    3. dict 字典
    4. set 集合
  • 不可變
    1. tuple 元組
    2. bytes
    3. 常量(int,str,bool 等)

list 列表 (推薦使用索引)
列表相當於一個排列整齊的隊列,可以理解為在內存中是一片排列整齊的連續的空間,它是可索引,可變的,有序的,線性結構,可叠代
優點:
通過索引(index)查找、替換元素 效率高 時間復雜度O(1)。
尾部追加(append)與 尾部移除(pop)元素快 效率高 時間復雜度O(1)。
缺點:
從中間增加或移除元素會使列表元素整體挪動 效率低。
因為是連續空間1,如果一次開辟空間較大,內存連續空間不夠時,會觸發GC進行垃圾回收。

tuple 元組(推薦使用索引)
元組在內存中可以理解為與列表相似 , 他是可索引的,不可變的,有序的,線性結構,可叠代
優點:
通過索引查找元素 時間復雜度為O(1)。
缺點:
元組是不可變的,是只讀的,不能修改。

set 集合
set在內存中是散落的,不連續的,不可索引 ,他是 去重的 可變的 無序的 可叠代 可hash
優點:
通過數值查詢元素是否在集合中(使用hash) 時間復雜度O(1)。
增加元素(add)時間復雜度O(1)
可以使用集合運算(並集 | 、交集 & 、對稱差集 ^ ,還可用 < , > 判斷子集 超集)。
缺點:
不能使用索引,不能放置內容相同的元素,不能放不可hash的元素(list,set,dity)。

dity 字典
dity在內存中是散落的,不連續的,會預留散列空間 。 無序的 可變的 可叠代 key是去重的、可hash
優點:
通過數值查詢快(使用hash) 時間復雜度O(1)。
增加kv對 時間復雜度O(1)。
移除kv對(pop) 時間復雜度O(1)。
缺點:
不能使用索引,不能放置內容相同的元素,不能放不可hash的元素(list,set,dity)。
相對於list來說,內存占用較大。

Python內置數據結構