테스트 사이트 - 개발 중인 베타 버전입니다

파이썬 이차원 배열 질문 채택완료

찬돌이 4년 전 조회 1,410

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개

채택된 답변
+20 포인트
뽀송이3
4년 전

얕은 복사때문입니다. 아래글을 읽어보세요..

https://infinitt.tistory.com/106

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

4년 전

감사합니다.

배열을 수정하여 해결 하였습니다.

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개

I
Innisfree
4년 전
안녕하세요?
행 복사만 for문을 활용하더라도 얕은 복사에 따른 문제를 해결할 수 있습니다 ^^
따라서 이렇게 선언하셔도 정상적으로 작동합니다!
m = [[0] * 5 for _ in range(5)]
즐거운 주말 되세요 :)

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인