1. 程式人生 > 實用技巧 >Python 連結串列(List)

Python 連結串列(List)

List 儲存的是一組有序序列的值。

記憶體分配方式:

類似於C++中vector,首先分配一段空間,當分配空間使用完後,將重新開闢一塊更大的空間,將原有資料拷貝到新開闢的空間後,釋放原有空間。

List 儲存方式:

每一個儲存單元(每一個元素)儲存的是值得引用地址,所以可以儲存任意型別。

效能特點:

(1)由於採用動態陣列方式儲存,儲存空間永遠大於實際儲存得元素,佔用空間相對tupple或者array多。

(2)由於儲存得是值域得引用,故每次讀寫先根據下標找到值域的地址,在進行資料的訪問,讀寫速度相比array慢。

特性:

(1)可動態修改

(2)支援切片操作

(3)支援算數運算(+, *)

(4)支援範圍運算(in, not in)

(5)可迴圈迭代

(6)當連結串列為空時,if判斷為False,非空為True

定義方式:

L = []          # 定義一個空連結串列
L = [1, 2, 3] # 定義一個連結串列並初始化資料

常用操作:

(1)切片操作:

x = [1, 2, 3, 4]
print x[1] # 下標為1的元素值 --> 2
print x[1:3] # 從下標為1開始,到下標為3(不包含)的序列 --> [2, 3]
print x[1:-1] # 從下標為1開始,到倒數第一個(不包含)的序列 --> [2, 3]

print x[1:] # 下標為1後面的所有元素 --> [2, 3, 4]
print x[:-1] # 從投開始到倒數第一個的序列 -->[1, 2, 3]

(2)算數運算

如果連結串列當前儲存空間在相加或者相乘後仍然足夠儲存追加的元素,則之間追加到當前空間,否則按照(記憶體分配方式)進行分配。

x = [1, 2]
print id(x) # 地址:45830280
x += [3, 4] # x = [1, 2, 3, 4]
print id(x) # 地址:45830280
x = [1, 2] * 2 # 2次疊加-->[1, 2, 1, 2]

(3)範圍運算

if 5 in [1, 2, 3]:
# TODO
pass
if 5 not in [1, 2, 3]:
# TODO
pass

方法列表:

物件方法: