728x90
반응형

Python 이중 어레이 초기화

 

1. 지능형 리스트로 표현

>>> board = [['_'] * 3 for _ in range(3)]
>>> board
[['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]

>>> board[1][2] = 'X'
>>> board
[['_', '_', '_'], ['_', '_', 'X'], ['_', '_', '_']]

 

2. 잘못된 표현

- 동일한 리스트에 대한 세 개의 참조를 가진 리스트는 잘못된 리스트입니다.

>>> wrong_board = [['_'] * 3] * 3
>>> wrong_board
[['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]

>>> wrong_board[1][2] = 'X'
>>> wrong_board
[['_', '_', 'X'], ['_', '_', 'X'], ['_', '_', 'X']]

  - 즉, 이렇게 코드를 작성한다면 최상위 리스트가 동일한 내부 리스트에 대한 참조를 세 개 가지게 되어
  - 세 개의 행이 모두 동일한 객체를 참조하게 된다.

 

참고) 한빛미디어 '전문가를 위한 파이썬'

728x90
반응형

+ Recent posts