I have met a very strange issue. I use a multi-dimension list to store some data. The data are in a .txt file, every line has 9 digit, and it has 450 lines data. For every 9 lines data(a 9x9 digit grid), I want to group them as a sublist. I use the code below to store the data, and my problem is when I finished and print the multi-dimension list, it seems every line of data in the list are the same. Sorry for my poor description, maybe my code can tell everything, and please tell me what's wrong with the code. I use python 2.7.5 on Windows, thanks.
# 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