Python中初始化一個二維數(shù)組及注意事項說明
Python初始化一個二維數(shù)組及注意事項
Python在初始化二維數(shù)組的時候還是有一些坑的,主要是要避免可變元素的傳遞改變問題:
array = [0, 0, 0] matrix = [array] * 3 matrix[0][0] = 1 print(matrix) >>>[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
如果用上面這種方式初始化數(shù)組,實際上并不是創(chuàng)建了一個新的二維數(shù)組,而是創(chuàng)建了三個指向array的引用。
因此,如果改變array的話,這三個就會同步隨之改變。
那么如何正確初始化一個二維數(shù)組呢?
方法一:
matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] matrix[0][0] = 1 print(matrix) >>>[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
方法二:(列表推導式)
matrix = [[0 for i in range(3)] for i in range(3)] matrix[0][0] = 1 print(matrix) >>>[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
Python二維數(shù)組初始化: [[0]*n]*n 與 [[0]*n for i in range(n)]
做題的時候因為初始化成[[0]*n]*n卡了好久,后來才知道這兩種方法初始化出來的數(shù)組不一樣。
用第一種方式初始化,其實是將【0】*n這個列表的索引復制了n遍,改變其中一個,其它的也會跟著改變。
而第二種是通過for i in range(n)推導出的真實二維列表。
注意:
推薦使用全部用循環(huán)或者組合的方式(里面是×,外面循環(huán))的方式。如果都為乘的方式是淺復制,每一行的改變都會改變其他行。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)處理apiDoc轉(zhuǎn)swagger的方法詳解
這篇文章主要為大家詳細介紹了Python實現(xiàn)處理apiDoc轉(zhuǎn)swagger的方法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下2023-02-02Python如何基于selenium實現(xiàn)自動登錄博客園
這篇文章主要介紹了Python如何基于selenium實現(xiàn)自動登錄博客園,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12PyCharm Ctrl+Shift+F 失靈的簡單有效解決操作
這篇文章主要介紹了PyCharm Ctrl+Shift+F 失靈的簡單有效解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Keras之fit_generator與train_on_batch用法
這篇文章主要介紹了Keras之fit_generator與train_on_batch用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06