[問題]請問如何把2維矩陣的元素變成list

看板Python作者 (紅酒牛肉焗烤飯)時間14年前 (2012/01/11 23:19), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
請問各位大大,小弟欲製造一個2維矩陣 ,其中的每個元素都是一個list,而list的 長度大小未必相同,並可執行像是append和extend 的動作。 舉例: A 是一個2*3矩陣 其中 A[0][1] 就是一個list 可以執行 A[0][1].append(5) 然後A[0][1]就是一個list裡面有5這個數字:[5] 我剛剛在shell裡面試過 如果預先宣告: a=a[[],[],[]] 就可以正常執行以上的操作 如果宣告: a=[[[]]*3]*2 再用a[0][1].append(3) 則矩陣內的每個元素(list)都會被加上3 但我希望可以只對個別的元素操作就好, 而不是所有的元素都被更改。 我希望可以做出可以變動大小的矩陣,所以無法在一開始就 直接寫死矩陣的大小。 請問是哪裡出錯了,還是有其他的方法可以實現這個功能, 請各問大大不吝指教,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.254.12

01/11 23:57, , 1F
這是list in-place 的問題 跟 reference object 有關
01/11 23:57, 1F

01/12 00:03, , 2F
比較簡單的方法是 用for之類的迴圈 動態地初始化吧
01/12 00:03, 2F

01/12 00:05, , 3F
目前找到numpy在裡面的array宣告dtype=list就可以了
01/12 00:05, 3F

01/12 00:07, , 4F
還是一個一個 append 吧 http://tinyurl.com/33cak8d
01/12 00:07, 4F

01/12 00:12, , 5F
醜一點的話 [([[] for i in xrange(c)]) for i in xrange(r)]
01/12 00:12, 5F

01/12 00:13, , 6F
c是col, r 是row 也是一行解決 時間就不知道了…
01/12 00:13, 6F

01/12 01:55, , 7F
謝謝KSJ和5566大大 目前已經解決 我是用numpy 的矩陣宣告
01/12 01:55, 7F

01/12 01:55, , 8F
再用fill空的串列就解決了
01/12 01:55, 8F

01/12 02:35, , 9F
用FILL還是會出問題 必須用迴圈一個一個賦值才能解決
01/12 02:35, 9F
文章代碼(AID): #1F3QXoND (Python)
文章代碼(AID): #1F3QXoND (Python)