Python天天美味 24 初始化多維陣列

2021-09-22 12:12:53 字數 1296 閱讀 7077

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

'print

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

'print

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...