函数transpose(a)
应该创建一个新矩阵,它是原始矩阵的换位,并将新矩阵返回给调用者。你知道吗
这是我以前的一次尝试,如果我只使用循环,这对我来说是最有意义的尝试。。。你知道吗
def transpose(a):
m = [None]*len(a[0])
for i in range(len(a)):
m[i] = [None]*len(a)
for j in range(len(a[i])):
m[i][j] = a[j][i]
return m
我在pythonshell中用:transpose([[4,8,10,68],[5,12,8,71],[5.5,11,8,70.5]])
尝试了代码,但得到了一个“IndexError:list index outofrange”
首先,请注意您没有矩阵。相反,您有一个
list
的lists
,这是表示矩阵的数学抽象的一种方法。你知道吗您的代码的问题在于您的轴混淆了:
也就是说,我建议另一种方法。使用
enumerate
,我们可以同时引用a
的元素及其索引:这保持了你最初答案的精神,但是(IMO)更干净。你知道吗
第三种方法是不用创建填充有
None
的lists
,而是使用append
:最后,为了完整性,一种基于非循环的方法(注意内部元素是
tuples
而不是lists
):代码的更正版本:
在遍历数组的过程中犯了两个小错误,第一个循环是
range(len(a))
,但应该是range(len(a[0]))
,因为您希望逐列遍历2d数组,第二个错误是range(len(a[i]))
,而不是range(len(a))
。在遍历二维数组的过程中反转了两个轴。你知道吗在python中,不需要按当前的方式分配内存,因为底层类型只是一个list列表,可以使用
append
方法添加元素。你知道吗您可以尝试以下使用列表理解概念的代码。你知道吗
相关问题 更多 >
编程相关推荐