Python 배열: 생성, 조작, 고급 연산 전문가 가이드
Python 배열이란?
Python 배열은 연속된 메모리에 동종 요소를 저장하는 컬렉션으로, 리스트보다 효율적 저장과 빠른 수치 연산 제공. 내장 array 모듈이 배열 생성과 조작 담당.
Python 배열 사용 시기
같은 타입의 많은 값 저장과 수치 계산 필요할 때 Python 배열 이상적. 리스트보다 메모리 덜 쓰고 큰 데이터셋에서 더 빠른 접근 제공.
배열 생성 문법
array 모듈 임포트 후 array.array(typecode, initializer) 호출:
import array
my_array = array.array('i', [1, 2, 3])
배열 타입 코드
| 타입 코드 | Python 타입 | C 타입 | 최소 크기(바이트) |
| 'u' | 유니코드 문자 | Py_UNICODE | 2 |
| 'b' | 정수 | Signed char | 1 |
| 'B' | 정수 | Unsigned char | 1 |
| 'h' | 정수 | Signed short | 2 |
| 'l' | 정수 | Signed long | 4 |
| 'L' | 정수 | Unsigned long | 4 |
| 'q' | 정수 | Signed long long | 8 |
| 'Q' | 정수 | Unsigned long long | 8 |
| 'H' | 정수 | Unsigned short | 2 |
| 'f' | 부동소수 | Float | 4 |
| 'd' | 부동소수 | Double | 8 |
| 'i' | 정수 | Signed int | 2 |
| 'I' | 정수 | Unsigned int | 2 |
요소 접근
요소는 0 기반 인덱스로 접근:
import array
balance = array.array('i', [300, 200, 100])
print(balance[1]) # 200
음수 인덱스나 슬라이싱도 사용 가능:
import array
arr = array.array('q', [3, 9, 6, 5, 20, 13, 19, 22, 30, 25])
print(arr[1:4]) # array('q', [9, 6, 5])
print(arr[7:10]) # array('q', [22, 30, 25])
요소 삽입
insert(index, value)로 특정 위치에 값 삽입:
import array
balance = array.array('i', [300, 200, 100])
balance.insert(2, 150)
print(balance) # array('i', [300, 200, 150, 100])
요소 수정
배열은 가변적; 직접 새 값 할당:
import array
arr = array.array('b', [3, 6, 4, 8, 10])
arr[0] = 99
print(arr) # array('b', [99, 6, 4, 8, 10])
연결도 지원:
import array
first = array.array('b', [4, 6, 8])
second = array.array('b', [9, 12, 15])
combined = first + second
print(combined) # array('b', [4, 6, 8, 9, 12, 15])
요소 제거
Pop 인덱스로 항목 제거:
import array
arr = array.array('b', [20, 25, 30])
arr.pop(2)
print(arr) # array('b', [20, 25])
Del 위치로 요소 삭제:
import array
arr = array.array('b', [10, 4, 5, 5, 7])
del arr[4]
print(arr) # array('b', [10, 4, 5, 5])
Remove 값의 첫 발생 삭제:
import array
arr = array.array('b', [2, 3, 4])
arr.remove(3)
print(arr) # array('b', [2, 4])
검색과 인덱싱
index(value)로 값의 인덱스 찾기:
import array
arr = array.array('b', [2, 3, 4, 5, 6])
print(arr.index(3)) # 1
배열 뒤집기
제자리 뒤집기:
import array
arr = array.array('b', [1, 2, 3])
arr.reverse()
print(arr) # array('b', [3, 2, 1])
유니코드 변환
'u' 타입 배열만 tounicode() 지원:
from array import array
p = array('u', [u'\u0050', u'\u0059', u'\u0054', u'\u0048', u'\u004F', u'\u004E'])
print(p) # array('u', 'PYTHON')
print(p.tounicode()) # PYTHON
요소 세기
count(x)로 발생 횟수 세기:
import array
arr = array.array('b', [2, 3, 5, 4, 3, 3, 3])
print(arr.count(3)) # 4
배열 순회
for 루프로 순회:
import array
arr = array.array('i', [300, 200, 100])
for x in arr:
print(x)
요약
- Python 배열은 타입 코드로 정의된 단일 타입 요소 보유.
array 모듈로 생성, 리스트보다 메모리 효율적.
- 인덱싱, 슬라이싱, 내장 메서드(
insert, remove, pop, reverse)로 데이터 조작.
- 배열은 연결, 카운팅, 검색 지원.
'u' 배열만 유니코드 문자열로 변환 가능.