python初始化list列表(1維 2維)

2022-01-23 20:09:27 字數 1293 閱讀 4304

1.初始化遞增的list:

list1 = list(range(10))

#print list1

#[0,1,2,...,9]

2.初始化每項為0的一維陣列:

list2 = [0] * 5

#print list2

#[0,0,0,0,0]

3.初始化固定值的一維陣列:

initval = 1

listlen = 5

list3 = [ initval for i in range(5)] # 推薦

#print list3

#[1,1,1,1,1]

list4 = [initval] * listlen

#print list4

#[1,1,1,1,1]

multilist = [[0 for col in range(5)] for row in range(6)] # 推薦

5.初始化乙個5x3每項為0(固定值)的陣列

multilist = [[0] * 5 for row in range(3)]

看到了以上的方法,那初始化乙個二維陣列時,是否可以這樣做呢:

multi = [[0] * 5] * 3

其實,這樣做是不對的,因為[0] * 5是乙個一維陣列的物件,* 3的話只是把物件的引用複製了3次,比如,我修改multi[0][0]:

multi = [[0] * 5] * 3

multi[0][0] = 'hello'

print multi

輸出的結果將是:

[['hello', 0, 0, 0, 0], ['hello', 0, 0, 0, 0], ['hello', 0, 0,0, 0]]

我們修改了multi[0][0],卻把我們的multi[1][0],multi[2][0]也修改了。這不是我們想要的結果。

但是如下寫法是對的:

multilist = [[0] * 5 for row in range(3)]

multilist[0][0] = 'hello'

print multilist

我們看輸出結果:

[['hello', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

恩,沒問題。但是,由於使用 * 的方法比較容易引起混淆導致bug,所以還是推薦使用上面方法4,即:

multilist = [[0 for col in range(5)] for row in range(6)]

初始化Python多維列表(list)的坑

刷題過程中採用兩種方式對乙個多維列表進行初始化,最後得到的結果不同,很是疑惑,後來發現兩種初始化方式是有區別的!capacity 10num 5valueexcel 0for j in range capacity 1 for i in range num 1 valueexcel2 0 capac...

Python初始化列表

python初始化列表 下面我們就來介紹在python中初始化列表 我們建立大小為1000並使用零初始化的列表 的一些方法。arr for i in range 1000 0 arr i 0 while i 1000 0 3 方法三 使用列表推導 list comprehension 列表推導 li...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...