作者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
1F:→ KSJ:这是list in-place 的问题 跟 reference object 有关 01/11 23:57
2F:→ KSJ:比较简单的方法是 用for之类的回圈 动态地初始化吧 01/12 00:03
3F:→ excon99:目前找到numpy在里面的array宣告dtype=list就可以了 01/12 00:05
5F:→ KSJ:丑一点的话 [([[] for i in xrange(c)]) for i in xrange(r)] 01/12 00:12
6F:→ KSJ:c是col, r 是row 也是一行解决 时间就不知道了… 01/12 00:13
7F:→ excon99:谢谢KSJ和5566大大 目前已经解决 我是用numpy 的矩阵宣告 01/12 01:55
8F:→ excon99:再用fill空的串列就解决了 01/12 01:55
9F:→ excon99:用FILL还是会出问题 必须用回圈一个一个赋值才能解决 01/12 02:35