life is egg

파이썬 2차원배열 생성시 주의할점 본문

개인공부/삽질

파이썬 2차원배열 생성시 주의할점

삶은계란진재혁 2024. 3. 24. 11:54

2차원 배열을 만져보다가 생긴 오류..

b_cost=([1e9]*N)*N) 이렇게해서 2차원 배열을 만들어줬는데

 

사진 하단에서 b_[0][0]=0 으로 초기화 시켜주면 0,0 의지점이 0 이될거라고 생각했는데

 

 

모든 행의 0번째 열이 0으로 초기화되었다..

 

그래서 찾아보았는데

 

이렇게 2차원 배열을 b_cost=([1e9]*N)*N)  이렇게 생성한다면 모든 행이 동일 . 한리스트 객체를 참조하게된다.

 

따라서 정상적으로 2차원 배열을 만들고싶다면

원하는 대로 특정 행만 0으로 초기화하려면 리스트 컴프리헨션 등을 사용하여 각 행을 별도의 리스트로 초기화해야한다..

 

b_cost = [[1e9] * N for _ in range(N)]  # 각 행을 별도의 리스트로 초기화
b_cost[0][0] = 0  # 첫 번째 행의 첫 번째 열을 0으로 설정

 

Comments