python生成m n 階陣列的三種方法與差異

2021-10-07 11:08:15 字數 1197 閱讀 7266

dparray= [[0] * n] * m
dparray= [[0 for _ in range(n)] for _ in range(m )]
dp = [[0] * n for _ in range(m )]
執行測試指令碼:

dp1 = [[0] * n] * m

dp2 = [[0 for _ in range(n)] for _ in range(m )]

dp3 = [[0] * n for _ in range(m)]

if dp1 == dp2 == dp3 :

print('dp1 == dp2 == dp3 is',true)

dp1[1][1] = 1

dp2[1][1] = 1

dp3[1][1] = 1

####

if dp1 == dp2 :

print('修改 dp[1][1]之後 :dp1 == dp2 is ',true)

else:

print('\n修改 dp[1][1]之後 :dp1 == dp2 is ',false)

print(dp1)

print(dp2)

if dp2 == dp3:

print('\n修改 dp[1][1]之後 :dp2 == dp3 is ',true)

print(dp2)

print(dp3)

執行指令碼輸出結果:

dp1 == dp2 == dp3 is true

修改 dp[1][1]= 1之後 :dp1 == dp2 is false

[[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]]

[[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]]

修改 dp[1][1]= 1之後 :dp2 == dp3 is true

[[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]]

[[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]]

結論:[[0] * n] * m生成的陣列 和 for迴圈生成的陣列存在本質區別,在使用過程,替換某一位置數值的時候就會產生異常。

python三階魔方 三階魔方還原公式

1.第二層稜塊歸位 2.頂層十字 3.頂層稜中間塊歸位 這一步的目的是使頂層的4個稜中間塊全部歸位。轉動頂層 u 若可以使乙個稜中間塊歸位 如下圖左,這裡以 紅 黃 塊為例 而其他3個都不能歸位,則將 紅 黃 所在這一面 紅面 定為正前面 f 按照圖示步驟轉動,可使4塊稜中間塊全部歸位,或出現下一種...

踏上Python第三階

系統睡眠,可以暫停顯示 import time time.sleep 3 睡眠3秒python continue 語句跳出本次迴圈,而break跳出整個迴圈。python 如何將整數轉化成二進位制字串 1 你可以自己寫函式採用 2 的方式來算。binary lambda n if n 0 else ...

三階幻方python解法

三階幻方 1 9共9個數字填入九宮格中,九宮格中間元素為5,各行 列 對角線元素相加和為15。求解出所有符合條件的排列。python解法1 由於九宮格中間元素已確定,剩下元素中選擇乙個數填入tmp 0 0 再選擇乙個數填入tmp 0 1 則剩下元素都可根據已填元素確定,通過兩層巢狀迴圈實現。lst ...