list
語法
使用[ ] 方括號代表list。
空 list
list() 或 [] 都是宣告空的list。
元素
用逗號分隔list中的元素。
list記憶體位址
Prerequisites:
先前在id的文章中提到,英文大小寫字母、數字0-9、底線,為了節省記憶體空間,Python都會指向相同記憶體位址。
Python list的記憶體位址分配跟C++、Java不一樣。
由以下程式碼可以看出x變數、nums[0]、nums[1]、nums[2]、nums[3]全指向同一個記憶體位址。
| 0 | 1 | 2 | 3 |
|---|---|---|---|
| 4370549520 | 4370549520 | 4370549520 | 4370549520 |
1
2
3
4
5
6
7
8
nums = [1, 1, 1, 1]
x = 1
print("address of nums = ", id(nums))
print("address of nums[0] = ", id(nums[0]))
print("address of nums[1] = ", id(nums[1]))
print("address of nums[2] = ", id(nums[2]))
print("address of nums[3] = ", id(nums[3]))
print("address of x = ", id(x))
address of nums = 4360423744
address of nums[0] = 4370549520
address of nums[1] = 4370549520
address of nums[2] = 4370549520
address of nums[3] = 4370549520
address of x = 4370549520
用C++的觀點是,建立一個指標陣列,指標就是記憶體位址,陣列中儲存的是記憶體位址。
1
2
3
4
5
6
int* array[4];
int var1 = 1;
array[0] = &var1;
array[1] = &var1;
array[2] = &var1;
array[3] = &var1;
記憶體位址4370549520儲存「1」的數值。
4370549520 → 1
指標陣列儲存的是記憶體位址,陣列中的pointer都是1的address。
4360423744
[ 0 ][ 1 ][ 2 ][ 3 ]
[ pointer ][ pointer ][ pointer ][ pointer ]
[ &1 ][ &1 ][ &1 ][ &1 ]
[ 4370549520 ][ 4370549520 ][ 4370549520 ][ 4370549520 ]
而nums則是指向指標陣列[0]的記憶體位址4360423744,指標陣列[0]儲存的內容是1的記憶體位址4370549520。