程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python中二維列表初始化的易錯概念

編輯:Python

如果用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. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved