배열
배열은 여러 개의 요소를 저장할 수 있는 일종의 자료구조이다. 연결된 빈칸 위의 숫자는 각각의 인덱스를 뜻하며, 우리가 흔히 알고 있는 모든 프로그래밍 언어에서 배열의 인덱스는 0부터 시작한다. 슬라이싱의 경우 마지막 인덱스에 해당하는 값은 결과에서 제외시킨다. 이해를 돕기 위해 이를 인덱싱의 "이상:미만 규칙"이라고 표현하겠다.
이러한 "이상:미만 규칙"으로 작동하는 이유는 가장 효과적이기 때문이다. 일단, 시작 인덱스를 포함하는 "이상" 구조가 시작 숫자를 직관적으로 표현해 범위의 시작을 명확히 한다. 이어서, 끝 인덱스를 포함하지 않는 "미만" 구조는 시퀀스의 연속을 표현하기 위해 불가피하면서도, 시퀀스의 길이를 직관적으로 알아낼 수 있도록 만드는 장점을 지닌다. 배열의 인덱스가 1이 아닌 0부터 시작하는 이유 역시 끝 인덱스만 봐도 시퀀스의 길이를 알 수 있기 때문이다.
파이썬 기본: 리스트
파이썬에서의 배열은 기본적으로 "리스트"이다. 리스트는 파이썬의 기본적인 자료구조로, 동적일 뿐 아니라 다양한 데이터 타입을 혼합해서 저장할 수 있다는 특징을 지닌다. 그렇기에 파이썬의 리스트는 메모리 효율이 좋다고 할 수 없다. 동적 배열이기에 필요에 따라 크기가 조정되고, 유연성을 위해 다양한 데이터 타입을 저장하게 되면서 메모리 관계가 복잡해진다.
new_list = [1, 2, 3]
print(new_list[1:2])
[2]
내부 라이브러리: Array 모듈
물론, 메모리 오버헤드를 방지하기 위한 방법도 있다. 파이썬에서는 array 모듈을 사용해 배열을 생성할 수 있는데, 이 배열은 리스트와 달리 고정된 데이터 타입을 가지고 있으며 메모리 효율도 좋다.
import array
new_array = array.array('i', [1, 2, 3])
print(new_array)
array('i', [1, 2, 3])
외부 라이브러리: NumPy 배열
더 나아가, 과학적 계산을 위해 널리 사용되는 NumPy 라이브러리의 ndarray도 있다. NumPy 배열은 다차원 배열과 다양한 수학적 연산을 지원한다. 단, 파이썬 내장 라이브러리가 아니기 때문에 따로 설치해야 한다.
import numpy as np
new_numpy_array = np.array([[1, 2, 3], [4, 5, 6]])
[[1 2 3]
[4 5 6]]
pip install numpy
- NumPy 설치
import numpy as np
print(np.__version__)
- NumPy 설치 확인
'Basics > For KR' 카테고리의 다른 글
스택, 큐, 덱? 너 누군데? (0) | 2024.11.26 |
---|---|
시간복잡도 실전 이해: 문자열 결합 연산 쓰지 마! (0) | 2024.11.19 |
파이썬의 연결리스트: 노드가 주소를 가리킨다고요? (0) | 2024.11.12 |
파이썬의 주요 자료형과 활용 예시 (3) | 2024.10.29 |
프로그래밍에서 자료구조란? (3) | 2024.10.22 |