더북(TheBook)

우리가 원했던 멋진 격자형 데이터가 생성된 것 같습니다. 이제 격자를 채워 봅시다.

>>> grid[1][0] = Color.RED
>>> grid[3][2] = Color.BLUE
>>> grid[3][1] = Color.GREEN
>>> grid[4][1:4] = [Color.RED] * 3
>>> pprint(grid)
[[<C.RED: 2>, <C.RED: 2>, <C.RED: 2>, <C.RED: 2>],
 [<C.RED: 2>, <C.RED: 2>, <C.RED: 2>, <C.RED: 2>],
 [<C.RED: 2>, <C.RED: 2>, <C.RED: 2>, <C.RED: 2>],
 [<C.RED: 2>, <C.RED: 2>, <C.RED: 2>, <C.RED: 2>],
 [<C.RED: 2>, <C.RED: 2>, <C.RED: 2>, <C.RED: 2>]]
>>> pprint([id(sublist) for sublist in grid])
[139768215997440,
 139768215997440,
 139768215997440,
 139768215997440,
 139768215997440]

실제로는 격자형 데이터를 생성한 것이 아니라, 동일한 객체5에 대한 5개의 참조가 생성되어 버렸습니다. 문제를 알고 있다면 여러 가지 방법으로 해결할 수 있습니다. 그중에서 가장 쉬운 해결책은 목록의 요소를 직접 곱하는 대신에 순환 표현식을 사용하는 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.