欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python對二維數(shù)組賦值問題

 更新時間:2023年08月18日 08:45:57   作者:study_&  
這篇文章主要介紹了python對二維數(shù)組賦值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

python對二維數(shù)組賦值

最近做力扣遇到一個問題,

obstacleGrid=[[0],[1]]
m = len(obstacleGrid)
n = len(obstacleGrid[0])
# 需要考慮m=1 n=1
dp = [[0] * n] * m

但是當(dāng)寫dp[0][0]=1時,dp[1][0]也會自動變1,理由

定義的時候dp的m行是同一個[0]*n的索引,所以一個被改變,其他的都被改變。

靠譜點的初始化方式

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

或者深拷貝

import copy
dp = []
a = [0]*n
for i in range(m):
?? ?dp.append(copy.deepcopy(a))

python創(chuàng)建二維數(shù)組的不同方式以及整列賦值的問題

會出現(xiàn)整列賦值的創(chuàng)建方式

在C中輸入二維數(shù)組形式非常熟悉(采用codeblocks):輸入一行的數(shù)字,每個之間空格隔開,回車?yán)^續(xù)輸下一行

在python中采用同樣的形式輸入(采用PyCharm):

代碼如下:

輸入:

其中輸入3->回車,輸入4->回車,表示構(gòu)建了一個A[4][3]的矩陣。

輸入1 2 3->回車,輸入4 5 6->回車,輸入7 8 9->回車,輸入0 1 2->回車

輸出:

這樣創(chuàng)建二維列表在后續(xù)的使用中遇到了問題。

比如我的本意是把第二行第二個元素賦值為1,而輸出如下

他將我每一行的第二列都賦值為了1,原因是因為我的二維列表創(chuàng)建方式導(dǎo)致了[[]]*4表示的是4個同時指向一個列表的引用,也就是4行都指向的是同一個列表,改變?nèi)我庖粋€都會改變每一行的當(dāng)列數(shù)據(jù)。

避免淺拷貝的創(chuàng)建方式

可以知道,上圖的兩種創(chuàng)建方式都可以避免淺拷貝,總結(jié)來說只要對于行不要使用*M這種寫法,都可以避免。

第一種創(chuàng)建方式可以在創(chuàng)建時就固定二維列表的行和列。

第二種創(chuàng)建方式可以初始只能固定行數(shù),每一行的數(shù)據(jù)可以在后續(xù)append進去。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論