我遇到了一个非常奇怪的问题。我使用多维列表来存储一些数据。数据在一个.txt文件中,每行有9位,它有450行数据。对于每 9 行数据(一个 9x9 数字网格),我想将它们分组为一个子列表。我使用下面的代码来存储数据,我的问题是当我完成并打印多维列表时,列表中的每一行数据似乎都是相同的。抱歉我的描述不佳,也许我的代码可以说明一切,请告诉我代码有什么问题。我在 Windows 上使用 python 2.7.5,谢谢。
# grid is a 3-dimension list, the first dimension is the index of 9x9 digit subgrid
# there are 50 9x9 digit subgrid in total.
grid = [[[0]*9]*9]*50
with open('E:\\sudoku.txt', 'r') as f:
lines = f.readlines()
for line_number, line in enumerate(lines, 1):
# omit this line, it is not data
if line_number % 10 == 1:
continue
else:
for col, digit in enumerate(line[:-1]):
if line_number % 10 == 0:
x = line_number / 10 - 1
y = 8
else:
x = line_number / 10
y = line_number % 10 - 2
grid[x][y][col] = int(digit)
# I print all the digits in the list and compare them with the .txt file
# it shows every single cell in grid are set correctly !!
print 'x=%d, y=%d, z=%d, value=%d '% (x, y, col, grid[x][y][col])
# But strange thing happens here
# I only get same line of value, like this:
# [[[0, 0, 0, 0, 0, 8, 0, 0, 6], [0, 0, 0, 0, 0, 8, 0, 0, 6] ... all the same line
# and 000008006 happens to be the last line of data in the .txt file
# what happens to the rest of data ? It's like they are all overwritten by the last line
print grid