故障在python填充空矩阵

问题描述:

我有我有创建一个空的矩阵,它的尺寸由阵列的大小和所确定的函数,它是从包含记录而产生的阵列[键,字符]故障在python填充空矩阵

数组的宽度。我需要使用第一个数组中的字符填充此列表。现在,当我编译这个我只是得到没有。有没有什么办法可以完成这个不同

def createArray(size): 
    return [None] * size 

def createMatrix(rows,cols): 
    m = createArray(rows) 
    for i in range(rows): 
     m[i] = createArray(cols) 
    return m 

def fillMatrix(matrix, array): 
    rows = len(matrix) 
    cols = len(matrix[0]) 

    arrSpot = 0 
    for r in range(0,rows,1): 
     for c in range(0, cols, 1): 
      matrix[r][c] = array[arrSpot][1] 
      arrSpot += 1 
    return 
+0

你在打电话?到目前为止,它的正义函数定义... – James 2013-04-24 23:55:18

+0

任何显而易见的事情你都可以用这种方式来做,比如'a = createArray(16); m = createMatrix(4,4); fillMatrix(m,a)' - 就是要引发一个'TypeError',因为你期望数组中的每个元素都是可以下标的,而不是。你可以做的唯一事情就是不填充0行矩阵,或者将不是用'createArray'做成的数组作为你的数组(例如,一个(行*列)×2或更多矩阵将工作...)。如果您希望我们调试您的代码,则必须向我们显示您的实际代码。 – abarnert 2013-04-25 00:21:42

+0

此外,您必须填写数组的唯一代码是'createArray',它将'None'放在每个值中。所以,无论你如何工作,大概'fillMatrix'都会填充一个矩阵,其值只有'None'值,所以...你为什么会惊讶于最终只有'None'价值观? – abarnert 2013-04-25 00:22:37

我想你只是忘了给fillMatrix一个返回值。

+0

不,'fillMatrix'就地变换了矩阵,所以它可能应该返回'None',因为它确实如此。 – abarnert 2013-04-25 00:23:03

一个相当简单的方法来做到这一点将是当你去一个列表追加行。所以,这样的事情:

def create_matrix(rows, cols): 
    matrix = [] 
    for i in range(rows): 
    row = [0]*cols 
    matrix.append(row) 
    return matrix 

我通常只会使用numpy为此。如果你有numpy的,那么你可以做

import numpy as np 
matrix = np.zeros((rows,cols)) 

(注意输入np.zeros是一个元组,而不是两个参数。)