더북(TheBook)

200개의 행은 분리되지 않는다. 이는 얕은 복사다. 200개의 쓸모없는 참조는 동일한 행을 바라보고 있는 것이다. 답답함을 참을 수가 없다. 200개의 행을 한 번에 추가하려면 다음과 같이 for 루프를 사용해야 한다.

mat = [ ]
for i in range(200):
    mat.append([0] * 100)

이 코드는 빈 리스트 mat을 생성하면서 시작한다.

각 루프를 수행하면서 100개의 0을 지닌 행이 하나 추가된다. 루프가 모두 실행되고 나면 mat은 모두 독립적인 값 2만 개를 가진 2차원 행렬을 만들게 된다. 가장 큰 인덱스의 위치는 mat[199][99]가 될 것이다. 값을 하나 바꾸어 보자.

mat[150][87] = 3.141592

리스트에 for 루프로 데이터를 추가하는 것은 리스트 함축을 사용할 수 있는 좋은 사례다.

mat = [ [0] * 100 for i in range(200) ]

[0] * 100 표현식은 리스트-함축 표현식의 값을 나타낸다. 모두 0으로 설정된 100개의 항목으로 구성된 1차원 리스트를 만든다. 이 표현식은 대괄호 기호 안에 위치하지 않아야 한다. 만약 대괄호 기호가 표기되면 불필요한 인덱스의 깊이가 추가된다.

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