无法输入mtarix中的数字。为什么指数超出范围?

时间:2017-10-03 20:47:41

标签: python-2.7

在矩阵中输入数字。为什么我得到IndexError:列表赋值索引超出范围?

i, j = 5, 7;
matrix = [[x + y for x in xrange(i)] for y in xrange(j)]
print (matrix)
for w in xrange(i):
    print (w)
    for h in xrange(j):
        tmp = int(input('Enter element of matrix'))
        matrix[w][h] = tmp
sums = map( lambda row: sum(row), matrix)
print (matrix)
print (sums)
print ('max:', sums.index(max(sums)))
print ('min:', sums.index(min(sums)))

1 个答案:

答案 0 :(得分:1)

matrix = [[x + y for x in xrange(i)] for y in xrange(j)]

上面的行使列数= i和行= j,因为它将创建一个带有i个变量的j列表,其中每个列表都充当一行。

for w in xrange(i):
print (w)
for h in xrange(j):
    tmp = int(input('Enter element of matrix'))
    matrix[w][h] = tmp

并且在这个循环中你使用w作为行,范围从0到i-1而不是它应该是0到j-1 类似地,h应该在0到i-1之间,而不是从0到j-1 所以你的循环应该是这样的 -

for w in xrange(j):  #note this changed from i to j
print (w)
for h in xrange(i):  #and this from j to i
    tmp = int(input('Enter element of matrix'))
    matrix[w][h] = tmp