-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

これは私の関数の1つです。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]]

がリストの2 番目の要素に[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] * yyゼロのリストを作成します。
  • これは、リストの内包 x時間内で行われます。

あなたは自問するかもしれません:なぜ単純にしないのa = [[0] * y] * xですか?続けて、試してみて、何が起こるか見てください。うまくいきますね。さてa[0][0] = 1、何が起こるか見てみましょう...

于 2013-10-21T12:56:49.363 に答える