如果用Python初始化一個長度為n的一維list,很簡單,只需:
ls = [0] * n
初始化元素為n個0。但是對於二維,如果簡單用這個方法擴展就很容易出錯:
ls = [[0] * n] * m
就會出現問題。把每個一維list當作元素,上面的代碼只會把[[0] * n]的引用復制m倍,並不會開辟m*n個單位的內存空間來。
這個時候,滿足ls[0]的地址跟ls[1],…, ls[m-1]的地址完全一樣:
id(ls[0]) == id(ls[1])
# True
這時,改變ls[0]的數值就會改變到ls[1]的數值。
相信這樣的初始化效果,並不是碼工們的初衷~
如果需要開辟m*n個單位的內存空間該怎麼做呢?
如下:
ls = [[0] * n for _ in range(m)]
1、 Preface 2、 Introduce 3、 Env
Catalog Preface 1.loc=‘String