-3
x = int (raw_input('Introduceti Ziua in care doriti adaugarea: '))
print
print "     Options Available"
print "---------------------------------"
print "1  -- FOOD"
print "2  -- BOOKS"
print "3  -- SPORTS"
print "4  -- Clothing"
print "5  -- Transport"
y = int (raw_input('Introduceti tipul dorit: '))
m = int (raw_input('Introduceti valoarea dorita: '))
a[x][y]=a[x][y] + m

这是我的功能之一。a是全局的,定义为所有值都设置为 0 的矩阵,例如a = [[0,0,0,0,0],[0,0,0,0,0,0]]. 如果我尝试a[1][2] = a[1][2] + m,我会看到错误消息List index out of range

请帮忙。

4

1 回答 1

4

无法在这里重现:

>>> a = [[0,0,0,0,0],[0,0,0,0,0,0]]
>>> a[1][2] = a[1][2] + 999
>>> a
[[0, 0, 0, 0, 0], [0, 0, 999, 0, 0, 0]]

您知道[1]访问列表的第二个元素吗?

如果您想创建一个每个都为零的x列表数组,请执行y

a = [[0] * y for _ in xrange(x)]

例如:

>>> x = 4
>>> y = 5
>>> a = [[0] * y for _ in xrange(x)]
>>> a
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
  • [0] * y创建一个y零列表。
  • 这是在列表理解 x时间内完成的。

你可能会问自己:为什么不干脆做a = [[0] * y] * x?继续,尝试一下,看看会发生什么。它有效,不是吗?现在做a[0][0] = 1,看看会发生什么......

于 2013-10-21T12:56:49.363 回答