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

2021-10-09 03:51:30 字數 944 閱讀 2338

刷題過程中採用兩種方式對乙個多維列表進行初始化,最後得到的結果不同,很是疑惑,後來發現兩種初始化方式是有區別的!

capacity =

10num =

5valueexcel =[[

0for j in

range

(capacity +1)

]for i in

range

(num +1)

]valueexcel2 =[[

0]*(capacity+1)

]*(num+1)

# 這兩種方式都可以得到6*11的初始值為0的列表,但在後續賦值操作中,卻得到了截然不同的結果。

# 對valueexcel賦值

valueexcel[0]

[0]=

1# 得到的是:

# 對valueexcel2賦值

valueexcel2[0]

[0]=

1# 得到的是:

通過讀取valueexcel和valueexcel2中子列表的id,發現valueexcel中每個子列表的id都不相同;而valueexcel2中每個子列表的id都相同,即valueexcel2中的子列表是同一物件的位址,改變其中乙個,另乙個也會改變。

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新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...