들어가며
파이썬에서 배열(Array)은 리스트와 유사하지만 고정된 데이터 타입을 가지며, 메모리 사용과 성능 면에서 더 효율적입니다. 특히 숫자 데이터를 효율적으로 저장하고 처리하는 데 유용하게 사용할 수 있죠. 이 글에서는 파이썬 배열 사용 법에 대해 정리해 보았습니다. array 모듈을 사용하여 배열을 선언하고 다루는 방법에 대해 알아볼게요.
파이썬 배열 선언 및 초기화
배열을 선언할 때는 array 모듈을 사용하며, 배열의 데이터 타입과 초기 값을 지정해야 합니다. 배열의 데이터 타입은 문자열 코드로 지정되며, 배열의 요소는 모두 동일한 데이터 타입을 가져야 합니다.
import array
# 배열 선언 구조
# array.array('타입코드', [요소1, 요소2, ...])
# 예제
numbers = array.array('i', [1, 2, 3, 4, 5])
print(numbers) # array('i', [1, 2, 3, 4, 5])
데이터 타입 코드
파이썬 array 모듈에서 사용되는 데이터 타입 코드는 다음과 같습니다.
- ‘b’: signed char (1 byte)
- ‘B’: unsigned char (1 byte)
- ‘u’: Unicode character (2 bytes)
- ‘h’: signed short (2 bytes)
- ‘H’: unsigned short (2 bytes)
- ‘i’: signed int (2 bytes)
- ‘I’: unsigned int (2 bytes)
- ‘l’: signed long (4 bytes)
- ‘L’: unsigned long (4 bytes)
- ‘q’: signed long long (8 bytes)
- ‘Q’: unsigned long long (8 bytes)
- ‘f’: float (4 bytes)
- ‘d’: double (8 bytes)
예제
import array
# 정수 배열 (signed int)
numbers = array.array('i', [1, 2, 3, 4, 5])
print(numbers) # array('i', [1, 2, 3, 4, 5])
# 부호 없는 정수 배열 (unsigned int)
unsigned_numbers = array.array('I', [1, 2, 3, 4, 5])
print(unsigned_numbers) # array('I', [1, 2, 3, 4, 5])
# 부동 소수점 배열 (float)
float_numbers = array.array('f', [1.0, 2.0, 3.0, 4.0, 5.0])
print(float_numbers) # array('f', [1.0, 2.0, 3.0, 4.0, 5.0])
2차원 배열 선언하기
파이썬의 array 모듈을 사용하여 2차원 배열을 선언하려면 중첩 리스트를 사용해 배열을 생성하면 됩니다.
python코드 복사import array
# 2차원 배열 선언 (중첩 리스트 사용)
array_2d = array.array('i', [array.array('i', [1, 2, 3]),
array.array('i', [4, 5, 6]),
array.array('i', [7, 8, 9])])
# 출력
for row in array_2d:
for element in row:
print(element, end=' ')
print()
이 방법은 중첩 리스트를 사용하여 2차원 배열을 구현한 것으로, array 모듈 자체는 다차원 배열을 직접적으로 지원하지 않기 때문에 이렇게 선언할 수 밖에 없죠.
만들어두고 나니 뭔가 배열같지가 않습니다. N 차원 배열을 선언하고 싶다면 numpy모듈을 사용하는게 더 수월하답니다.
아래글을 통해 numpy로 N차원 배열 만드는 방법 알아보세요
배열의 주요 메서드와 속성
요소 추가 및 제거
배열에 요소를 추가하거나 제거하는 메서드도 알아두면 배열을 다루는 과정이 좀 더 수월하겠죠? 메서드들은 아래와 같습니다.
append(x): 배열의 끝에 요소 x를 추가합니다.insert(i, x): 인덱스 i에 요소 x를 추가합니다.remove(x): 배열에서 첫 번째로 나타나는 요소 x를 제거합니다.pop([i]): 인덱스 i의 요소를 제거하고 반환합니다. i를 지정하지 않으면 마지막 요소를 제거하고 반환합니다.
예제
# 요소 추가
numbers.append(6)
print(numbers) # array('i', [1, 2, 3, 4, 5, 6])
# 특정 위치에 요소 추가
numbers.insert(2, 9)
print(numbers) # array('i', [1, 2, 9, 3, 4, 5, 6])
# 요소 제거
numbers.remove(9)
print(numbers) # array('i', [1, 2, 3, 4, 5, 6])
# 마지막 요소 제거
last_element = numbers.pop()
print(last_element) # 6
print(numbers) # array('i', [1, 2, 3, 4, 5])
배열의 슬라이싱
배열도 리스트처럼 슬라이싱을 통해 부분 배열을 추출할 수 있습니다.
예제
# 배열 슬라이싱
sub_array = numbers[1:4]
print(sub_array) # array('i', [2, 3, 4])
배열의 활용
배열은 다음과 같은 경우에 특히 유용합니다:
- 메모리 효율성: 동일한 데이터 타입을 가지는 요소들을 저장할 때 메모리를 절약할 수 있습니다.
- 빠른 연산: 숫자 연산에 특화된 작업에서 리스트보다 빠르게 처리할 수 있습니다.
- 고정된 타입: 모든 요소가 동일한 데이터 타입을 가져야 하므로 데이터 무결성을 유지할 수 있습니다.
계속 언급된 ‘리스트’는 어떤데? 궁금하시다면 아래글이…
정리
파이썬에서 배열을 사용하는 방법을 이해하면, 메모리 사용과 성능을 최적화할 수 있습니다. 배열은 리스트와 유사하지만, 고정된 데이터 타입을 가지며, 숫자 데이터 처리에 특히 유용합니다. 이 글에서 소개한 배열의 선언, 요소 추가 및 제거, 슬라이싱 등의 방법을 통해 배열을 효과적으로 활용해 보세요.