作者excon99 (紅酒牛肉焗烤飯)
看板Python
標題[問題]請問如何把2維矩陣的元素變成list
時間Wed Jan 11 23:19:11 2012
請問各位大大,小弟欲製造一個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
→ KSJ:這是list in-place 的問題 跟 reference object 有關 01/11 23:57
→ KSJ:比較簡單的方法是 用for之類的迴圈 動態地初始化吧 01/12 00:03
→ excon99:目前找到numpy在裡面的array宣告dtype=list就可以了 01/12 00:05
→ KSJ:醜一點的話 [([[] for i in xrange(c)]) for i in xrange(r)] 01/12 00:12
→ KSJ:c是col, r 是row 也是一行解決 時間就不知道了… 01/12 00:13
→ excon99:謝謝KSJ和5566大大 目前已經解決 我是用numpy 的矩陣宣告 01/12 01:55
→ excon99:再用fill空的串列就解決了 01/12 01:55
→ excon99:用FILL還是會出問題 必須用迴圈一個一個賦值才能解決 01/12 02:35