1
_R = [0] * 5
R = [_R] * 4

num_user = 0
num_item = 0

for i in range(8):
    s = input().split()
    for j in range(4):
        s[j] = int(s[j])

    R[s[0]][s[1]] = s[2]
    print(s[0], s[1], R[s[0]][s[1]])
    num_user = max(num_user, s[0])
    num_item = max(num_item, s[1])

print("=====")

for i in range(num_user + 1):
    for j in range(num_item + 1):
        print(i, j, R[i][j])

exit()

おそらく、あなたは私が何を尋ねようとしているのかをすでに理解しているでしょう。出力は私を混乱させました:

#output
1 2 3
2 4 2
1 1 5
3 2 2
2 2 1
3 3 4
1 4 3
2 1 4
=====
0 0 0
0 1 4
0 2 1
0 3 4
0 4 3
1 0 0
1 1 4
1 2 1
1 3 4
1 4 3
2 0 0
2 1 4
2 2 1
2 3 4
2 4 3
3 0 0
3 1 4
3 2 1
3 3 4
3 4 3

私は一体どうしたんだろう?最後に Python でコーディングしたのは 2.7 で、ずっと前のことです。重要な文法を忘れていませんか?

4

2 に答える 2

2
_R = [0] * 5
R = [_R] * 4

それがNOGOです。R には _R が 4 回含まれ、同じ配列が 4 回含まれます...

代わりにこれを使用してください:

R = [[0 for col in range(5)] for row in range(4)]
于 2012-11-14T10:03:01.603 に答える
2

リストのリストを間違った方法で作成しています:

>>> _R = [0] * 5
>>> R = [_R] * 4
>>> [id(x) for x in R]    #here all objects are acually identical
[36635392, 36635392, 36635392, 36635392]

>>> R[0][1]=1           #changing one element changes all other elements as well
>>> R
[[0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]

この方法でリストを作成することをお勧めします。

>>> R=[[0]*5 for _ in range(4) ]
>>> [id(x) for x in R]
[37254008, 36635712, 38713784, 38714664]
>>> 
于 2012-11-14T10:05:08.837 に答える