m = [[0]*5]*5
k = 0
for i in range(5):
for j in range(5):
k += 1
m[i][j] = k
print(m)
출력 결과
[ [21, 22, 23, 24, 25],
[21, 22, 23, 24, 25],
[21, 22, 23, 24, 25],
[21, 22, 23, 24, 25],
[21, 22, 23, 24, 25] ]
원하는 결과
[ [1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25] ]
왜 이렇게 출력이 되는 걸까요?
답변 2개 / 댓글 1개
얕은 복사때문입니다. 아래글을 읽어보세요..
감사합니다.
배열을 수정하여 해결 하였습니다.
m = [[0 for i in range(5)] for j in range(5)]
k = 0
for i in range(5):
for j in range(5):
k += 1
m[i][j] = k
print(m)
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
행 복사만 for문을 활용하더라도 얕은 복사에 따른 문제를 해결할 수 있습니다 ^^
따라서 이렇게 선언하셔도 정상적으로 작동합니다!
m = [[0] * 5 for _ in range(5)]
즐거운 주말 되세요 :)