python中初始化乙個5 x 3每項為0的陣列,最好方法是:
multilist
=[[0
forcol
inrange(
5)]
forrow
inrange(3)]
我們知道,為了初始化乙個一維陣列,我們可以這樣做:
alist
=[0] *5
沒錯,那我們初始化乙個二維陣列時,是否可以這樣做呢:
multi
=[[0] *5
] *3
其實,這樣做是不對的,因為[0] * 5是乙個一維陣列的物件,* 3的話只是把物件的引用複製了3次,比如,我修改multi[0][0]:
multi
=[[0] *5
] *3multi[0][0] ='
love china
multi
輸出的結果將是:
[['love china', 0, 0, 0, 0], ['love china', 0, 0, 0, 0], ['love china', 0, 0, 0, 0]]
我們修改了multi[0][0],卻把我們的multi[1][0],multi[2][0]也修改了。這不是我們想要的結果。
如果我們這樣寫呢:
multilist
=[[0] *5
forrow
inrange(3)]
multilist[0][0] ='
love china
multilist
我們看輸出結果:
[['love china', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
恩,沒問題。但是,由於使用 * 的方法比較容易引起混淆導致bug,所以還是推薦使用上面第一種方法,即:
multilist
=[[0
forcol
inrange(
5)]
forrow
inrange(3)]
python 天天美味系列(總)
python 天天美味(22) - 拷貝物件(深拷貝deepcopy與淺拷貝copy)
python 天天美味(23) - enumerate遍歷陣列
python 天天美味(24) - 初始化多維陣列
python 天天美味(25) - 深入理解yield
python 天天美味(26) - __getattr__與__setattr__
...
Python天天美味 24 初始化多維陣列
python中初始化乙個5 x 3每項為0的陣列,最好方法是 multilist 0 forcol inrange 5 forrow inrange 3 我們知道,為了初始化乙個一維陣列,我們可以這樣做 alist 0 5 沒錯,那我們初始化乙個二維陣列時,是否可以這樣做呢 multi 0 5 3其...
Python天天美味閱讀筆記
從乙個部落格裡找到了這個,本來想看書的,有第二版出了,可惜圖書館沒有。先看看這個再說。1 交換變數 python可以寫出這麼自然的 a b c c a b乙個冒氣泡排序的例子 array 1,2,5,3,6,8,4 for i in range len array 1,1,1 for j in ra...
Python天天美味 1 交換變數
python美味第一頓,來個方便快捷的變數交換!為什麼是python?因為python中交換變數不需要臨時變數!如 a,b,c b,c,a 來個複雜一點的例子,再來一頓家喻戶曉的 氣泡排序 吧 array 1,2,5,3,6,8,4 fori inrange len array 1 1,1 forj...