The following is python code, I initialize a 2-d list using operator *, and set the diagonal elements with other value. But get unexpected output.
table = [([False]*5)]*5
for i in range(5):
table[i][i] = 1
The expected output is
[[True, False, False, False, False],
[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, True, False],
[False, False, False, False, True]]
But I got
[[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True]]
May the elements in the list refers one, I guess. How could I get the expected output without using numpy or other packages?