使用Python初始化多維列表遇到的問(wèn)題詳解
使用Python初始化多維列表遇到的問(wèn)題
問(wèn)題
我們知道有兩種方式可以初始化一個(gè)m*n二維列表:
- 使用*
m, n = 3, 2 x = [[0] * n] * m
- 使用for
y = [[0] * 2 for i in range(3)] print(x) print(y)
乍一看, 兩者得到的結(jié)果是相同的:
[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]
實(shí)則其中有大坑,我們?cè)囍薷南聏,y:
x[1][1]=2 y[1][1]=2 print(x) print(y)
得到如下結(jié)果:
[[0, 2], [0, 2], [0, 2]]
[[0, 0], [0, 2], [0, 0]]
坑就在這,方法1得到的多維列表,內(nèi)層列表其實(shí)只有一份拷貝,修改一個(gè)就等于修改所有,而方法2內(nèi)部列表都是獨(dú)立的個(gè)體,修改一個(gè)并不會(huì)傳導(dǎo)到另一個(gè):
x = [[0]*2]*3 y = [[0] * 2 for i in range(3)] print(*[id(i) for i in x]) print(*[id(i) for i in y])
輸出:
2128813329536 2128813329536 2128813329536
2128813351680 2128813351616 2128813351488
結(jié)論
為了避免令人迷惑的結(jié)果出現(xiàn), 初始化多維列表時(shí)盡量使用:
[[0]*n for i in range(m)]
到此這篇關(guān)于使用Python初始化多維列表遇到的問(wèn)題詳解的文章就介紹到這了,更多相關(guān)Python初始化多維列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Jupyter Notebook讀入csv文件時(shí)出錯(cuò)的解決方案
這篇文章主要介紹了Jupyter Notebook讀入csv文件時(shí)出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03python playwright 自動(dòng)等待和斷言詳解
這篇文章主要為大家介紹了python playwright 自動(dòng)等待和斷言,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-11-11Pytorch復(fù)現(xiàn)擴(kuò)散模型的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Pytorch復(fù)現(xiàn)擴(kuò)散模型,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以跟隨小編一起了解一下2023-04-04python入門:這篇文章帶你直接學(xué)會(huì)python
本教程并未涵蓋Python語(yǔ)言的全部?jī)?nèi)容,只是一個(gè)入門的教程,Python有非常多的庫(kù)以及很多的功能特點(diǎn)需要學(xué)習(xí),小編只是拋磚引玉,希望大家可以從中受益2018-09-09一篇文章帶你了解python標(biāo)準(zhǔn)庫(kù)--random模塊
這篇文章主要給大家介紹了關(guān)于Python中random模塊常用方法的使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08將Python項(xiàng)目打包成exe并附帶下載功能的操作流程
這篇文章主要為大家詳細(xì)介紹了將Python項(xiàng)目打包成exe并附帶下載功能的操作流程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2023-12-12詳解解決jupyter不能使用pytorch的問(wèn)題
這篇文章主要介紹了詳解解決jupyter不能使用pytorch的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02探索Python函數(shù)調(diào)用為何加速代碼執(zhí)行原理
Python 作為一種解釋型語(yǔ)言,其執(zhí)行速度相對(duì)于編譯型語(yǔ)言可能會(huì)較慢,然而,在Python中,通常觀察到代碼在函數(shù)中運(yùn)行得更快的現(xiàn)象,這個(gè)現(xiàn)象主要是由于函數(shù)調(diào)用的內(nèi)部?jī)?yōu)化和解釋器的工作方式導(dǎo)致的,本文將深入探討這個(gè)現(xiàn)象,并通過(guò)詳細(xì)的示例代碼進(jìn)行解釋2024-01-01