我知道我错过了一些产生这个矩阵的部分,但我似乎从一开始就找不到我的错误。
我有三个任务。
1)显示空矩阵的样子。 2)显示原始矩阵(4x3)。 3)然后将矩阵转置为3x4。
import sys
from scanner import *
def createMatrix(size):
if size == 0: return []
else:
return [0] + createMatrix(size -1)
def printGrid(gridlist):
for row in gridlist:
print (str(row)+"\n")
def nrows(g):
return len(g)
def ncols(g):
return len(g[0])
def printMatrix(g):
for i in range(0,nrows,1):
for j in range(0,ncols,1):
print("The original matrix is:",g[i][j])
print('')
print('')
def printMatrixTranspose(g):
for j in range(0,ncols,1):
for i in range(0,nrows,1):
print("The transposed matrix is:",g[i][j])
print('')
print('')
def readInput(filename,grid):
s = Scanner(filename)
r = s.readtoken()
while r != "":
r = int(r)
c = s.readint()
v = s.readint()
grid[r][c]=v
r = s.readtoken()
s.close()
def main():
grid = createMatrix(5)
for i in range(4):
grid[i] = createMatrix(5)
readInput(sys.argv[1],grid)
printMatrixTranspose(g)
main()
我一直收到这个错误,不确定如何修复它。
Traceback (most recent call last):
File "transpose.py", line 51, in <module>
main()
File "transpose.py", line 48, in main
readInput(sys.argv[1],grid)
File "transpose.py", line 37, in readInput
r = int(r)
TypeError: int() argument must be a string or a number, not 'method'
答案 0 :(得分:0)
如果您将矩阵作为列表列表进行管理,则使用您的列表作为zip()
函数的参数,转置非常简单,如下所示:
x = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
print x
print map(list,zip(*x))
我们map()
list()
函数在zip
的输出中,因为zip会返回元组列表,而不是列表列表。
以上版画:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
编辑:该错误表明您添加的代码与您正在运行的代码不匹配。检查您的文件是否已保存,并在每次调用()
后验证是否有readtoken
括号。