亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

最近做力扣遇到一個(gè)問題,

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

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

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

靠譜點(diǎ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ù)組的不同方式以及整列賦值的問題

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

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

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

代碼如下:

輸入:

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

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

輸出:

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

最新評(píng)論