파이썬 리스트와 배열, 무엇이 다를까?
파이썬의 리스트(list)는 매우 유연한 자료구조입니다. 정수, 문자열, 심지어 또 다른 리스트까지 서로 다른 타입의 데이터를 하나의 리스트에 자유롭게 담을 수 있으며, 요소를 추가할 때도 평균적으로 상수 시간(O(1))에 처리되어 성능 면에서도 효율적입니다. 따라서 데이터를 동적으로 늘리거나 줄여야 하는 상황이라면 리스트가 가장 좋은 선택입니다. 다만, C 언어의 배열에 비해 훨씬 많은 메모리 공간을 사용한다는 단점이 있습니다.
반면 array.array 타입은 C 배열을 얇게 감싸는(thin wrapper) 형태의 자료구조입니다. 오직 동일한 타입의 데이터(동질적 데이터)만 담을 수 있는 제약이 있지만, 그 대신 메모리를 아주 효율적으로 사용합니다. 실제 점유 메모리는 sizeof(객체 하나) × 길이 바이트에 불과합니다.
예시로 확인하는 차이점
리스트는 아래와 같이 여러 타입을 섞어 담을 수 있습니다:
[1, 'a', [1, 2], 'string']반면 배열에는 동일한 타입의 값만 넣을 수 있습니다:
[1, 2, 3, 4]정리
- 리스트(list): 이기종 데이터 저장 가능, 요소 추가·삭제가 빠르고 유연함, 대신 메모리 사용량이 큼
- 배열(array.array): 동일 타입만 저장 가능하지만 메모리 효율이 매우 뛰어남
따라서 대량의 숫자 데이터를 효율적으로 다뤄야 한다면 array 모듈이나 NumPy 배열을 고려하는 것이 좋고, 일반적인 용도라면 리스트를 사용하는 것이 가장 편리합니다.