【问题标题】:Matrix Generator python index assignment list out of range矩阵生成器python索引分配列表超出范围
【发布时间】:2016-02-20 01:21:35
【问题描述】:

下面是我写的代码。它说列表分配索引超出范围。我似乎无法弄清楚我在哪里出错了。也许有人可以详细说明错误在哪里。

def genarator(x, y):
    square = x * y
    matrix = [[]]
    matrix2 = []

    i = 0    
    while square > 0:
        j = 0
        while x > j:
            matrix[i][j] = int(raw_input("Enter the matrix number"))
            j = 1
        i = 1
        square = -square
        matrix2 = matrix2 + matrix

    return matrix2


def main():    
    matrix3 = []
    x = int(raw_input("Enter the width of your matrix"))
    y = int(raw_input("Enter the Length of your matrix"))
    matrix3 = genarator(x, y)
    print(matrix3)
    return 0

main()
###EDIT###########我解决了这个问题

定义生成器(x, y):

matrix = [[0 for i in range(x)] for j in range(y)]

turns = x

i = 0

j = 0

while turns > 0:

    while i < x:

        while j < y:

            matrix[i][j] = int(raw_input("Enter Array values"))

            j += 1
        j = 0

        i += 1

    turns -= 1

print(matrix)

def main():

x = int(raw_input("Enter array length"))

y = int(raw_input("Enter array width"))

print(generator(x, y))

return 0

main()

【问题讨论】:

    标签: python matrix indexing


    【解决方案1】:

    如果您尝试以下 sn-p:

    x = []
    x[0] = 4
    

    你会看到有一个错误。原因是x[0]还没有定义,所以不能修改。要修复您的错误,您必须在修改列表之前添加一些内容:

    def genarator(x, y):
        square = x * y
        matrix = [[]]
        matrix2 = []
    
        i = 0    
        while square > 0:
            matrix.append([])
            j = 0
            while x > j:
                matrix[-1].append(int(raw_input("Enter the matrix number")))
                j = 1
            i = 1
            square = -square
            matrix2 = matrix2 + matrix
    
        return matrix2
    

    我还修改了索引,因为-1 会给你最后一项,这就是你想要的。

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2019-06-18
      • 2020-02-13
      相关资源
      最近更新 更多