The source code is as follows:
mt=[None]*9]*9
for i in range (9):
for jin range (9):
mt[i][j]=(i+1)*(j+1)
print("%2d"%(mt[i][j]), end="")
print()
print(mt)#why
for i in range (9):
for jin range (9):
print("%2d"%(mt[i][j]), end="")
print()
For some reason, the results are as follows:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
[[9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81], [9, 18, 27, 36, 45, 54, 63, 72, 81]]
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
9 18 27 36 45 54 63 72 81
I'm troubled because I don't know the cause.
Thank you for your cooperation.
mt=[None]*9]*9
mt=[None]*9 for i in range(9)]
to fix it.
The result of your question is multidimensional array trap.
Although the link details, the internal list is identical because it copies nine [None]*9
lists outside it.
Therefore, every time you rewrite mt[i]
, everything from mt[0]
to mt[8]
is affected, and the array of steps 1 (list of mt[0]
) is also rewritten, for example, as shown in the code below.
mt=[None]*9]*9
#mt = [[None]*9 for i in range(9)]
for i in range (9):
for jin range (9):
mt[i][j]=(i+1)*(j+1)
print("%2d"%(mt[i][j]), end="")
print(Array of steps "1 = %s" %mt[0])
Output:
1 2 3 4 5 6 7 8 9 Array of steps = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2 4 6 8 10 12 14 16 181 Stages = [2, 4, 6, 8, 10, 12, 14, 16, 18]
369 12 15 18 21 24 271 Stages = [3, 6, 9, 12, 15, 18, 21, 24, 27]
48 12 16 20 24 28 32 361 Stages Array = [4, 8, 12, 16, 20, 24, 28, 32, 36]
5 Array of steps 10 15 20 25 30 35 40 45 1 = [5, 10, 15, 20, 25, 30, 35, 40, 45]
6 12 18 24 30 36 42 48 541 Stages Array = [6, 12, 18, 24, 30, 36, 42, 48, 54]
7 14 21 28 35 42 49 56 63 1 Stages Array = [7, 14, 21, 28, 35, 42, 49, 56, 63]
816 24 32 40 48 56 64 721 Stages Array = [8, 16, 24, 32, 40, 48, 56, 64, 72]
918 27 36 45 54 63 72 81 Stages Array = [9, 18, 27, 36, 45, 54, 63, 72, 81]
© 2024 OneMinuteCode. All rights reserved.