看板 Python 關於我們 聯絡資訊
請問各位大大,小弟欲製造一個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
amulet5566:還是一個一個 append 吧 http://tinyurl.com/33cak8d 01/12 00:07
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