반응형
Advanced Data Type (고급 자료형)
이번 글에서는 Python의 Advanced Data Type (고급 자료형)에 데하여 설명을 해보겠습니다.
List (리스트)
List(리스트)는 순서가 있는 가변 길이의 Sequence 자료형입니다.
- 주요한 특징은, 순서를 유지하고, 중복순서를 하용하며, 요소의 추가, 삭제, 수정이 가능하다는 점입니다.
list_example = [1, 2, 3, 4]
list_example.append(5) # [1, 2, 3, 4, 5]
list_example.remove(3) # [1, 2, 4, 5]
Set (세트)
Set(세트)는 서가 없는 중복되지 않은 요소의 집합입니다.
- 주요한 특징은, 순서가 없고, 중복순서를 하용하지 않으며, 집합 연산 (교집합, 합집합, 차집합)에 유용합니다.
set_example = {'a', 'b', 'c'}
set_example.add('d') # {'a', 'b', 'c', 'd'}
set_example.remove('b') # {'a', 'c', 'd'}
Dictionary (딕셔너리)
Dictionary (딕셔너리)는 Key(키)-Value(값 쌍으로 이루어진 가변 길이의 자료형입니다.
- 주요한 특징은 키가 고유하고, 중복되지 않으며, 빠른 검색과 Data Mapping에 유용합니다.
dict_example = {'a': 1, 'b': 2, 'c': 3}
dict_example['d'] = 4 # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
del dict_example['b'] # {'a': 1, 'c': 3, 'd': 4}
Collections Moudle
Collections 모듈은 Python에 내장되어 있는 모듈입니다.
- 컨테이너 자료형을 제공하여 기본 자료형을 확장해서 사용가능 하다는 특징이 있습니다.
deque (Double-Ended Queue)
deque는 양쪽 끝에서 빠르게 추가 및 삭제가 가능한 자료형 입니다.
- Queue & Stack의 기능을 동시에 사용해야 할때 유용합니다.
- collections.deque를 사용하여 생성합니다.
from collections import deque
deque_example = deque([1, 2, 3])
deque_example.append(4) # deque([1, 2, 3, 4])
deque_example.appendleft(0) # deque([0, 1, 2, 3, 4])
deque_example.pop() # deque([0, 1, 2, 3])
deque_example.popleft() # deque([1, 2, 3])
Counter
Counter는 요소의 개수를 셀 때 사용되는 Dictionary 서브 Class 입니다.
- 주로, 데이터의 빈도를 분석할때 유용한 클래스 입니다.
- collections.Counter를 사용하여 생성합니다.
from collections import Counter
counter_example = Counter(['a', 'b', 'a', 'c', 'b', 'a'])
print(counter_example) # Counter({'a': 3, 'b': 2, 'c': 1})
OrderedDict
OrderedDict는 순서를 유지하는 Dictionary 입니다.
- 일반적으로, 데이터의 입력 순서가 중요한 경우에 사용합니다.
- collections.OrderedDict를 사용하여 생성합니다.
from collections import OrderedDict
ordered_dict_example = OrderedDict()
ordered_dict_example['a'] = 1
ordered_dict_example['b'] = 2
ordered_dict_example['c'] = 3
print(ordered_dict_example) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
defaultdict
defaultdict은 기본 값을 제공하는 Dictionary 입니다.
- 주로 사용하는 경우는 Key값ㅇ가 존재하지 않을 때 기본 값을 제공하여 코드의 간결성과 안전성을 높입니다.
- collections.defaultdict를 사용하여 생성합니다.
from collections import defaultdict
defaultdict_example = defaultdict(int)
defaultdict_example['a'] += 1
print(defaultdict_example) # defaultdict(<class 'int'>, {'a': 1})
namedtuple
namedtuple은 필드 이름을 가지는 튜플 서브 클래스입니다.
- tuple의 가독성을 높이고, 데이터의 구조를 명확히 정의할 때 사용합니다.
- collections.namedtuple를 사용하여 생성합니다.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
point_example = Point(10, 20)
print(point_example) # Point(x=10, y=20)
print(point_example.x, point_example.y) # 10 20
Comprehension (컴프리헨션)
Comprehension (컴프리헨션)은 기존의 List, 집합, Dictionary 등을 더 간결하고 효율적으로 생성하는 방법입니다.
- 반복문을 대체하여 더 간결한 표현이 가능하며, 대규모 데이터를 효율적으로 처리할 수 있습니다.
- 이를 통해 코드의 가독성을 높이고 작성 시간을 줄일 수 있습니다.
List Comprehension (리스트 컴프리헨션)
List Comprehension (리스트 컴프리헨션)은 리스트를 간결하게 생성하는 방법입니다.
- 기본 문법
[expression for item in iterable]
- 조건부 List Comprehension
[expression for item in iterable if condition]
- Example (예시)
# 기존 방법
numbers = [1, 2, 3, 4, 5]
squares = []
for n in numbers:
squares.append(n ** 2)
# 리스트 컴프리헨션
squares = [n ** 2 for n in numbers]
Dictionary Comprehension (딕셔너리 컴프리헨션)
Dictionary Comprehension (딕셔너리 컴프리헨션)은 딕셔너리를 간결하게 생성하는 방법입니다.
- 기본 문법
{key: value for item in iterable}
- 조건부 Dictionary Comprehension
{key: value for item in iterable if condition}
- Example (예시)
# 기존 방법
numbers = [1, 2, 3, 4, 5]
squares = {}
for n in numbers:
squares[n] = n ** 2
# 딕셔너리 컴프리헨션
squares = {n: n ** 2 for n in numbers}
Set Comprehension (집합 컴프리헨션)
Set Comprehension (집합 컴프리헨션)은 집합을 간결하게 생성하는 방법입니다.
- 기본 문법
{expression for item in iterable}
- 조건부 Set Comprehension
{expression for item in iterable if condition}
- Example (예시)
# 기존 방법
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_squares = set()
for n in numbers:
unique_squares.add(n ** 2)
# 집합 컴프리헨션
unique_squares = {n ** 2 for n in numbers}
Comprehension의 필요성
- 대규모 데이터를 효율적으로 처리
- 컴프리헨션은 대규모 데이터를 처리할 때 더 빠르고 효율적으로 작동할 수 있습니다.
- 반복문을 간결하게 표현함으로써 실행 속도를 높일 수 있습니다.
- 복잡한 반복문을 간결하게 표현
- 컴프리헨션을 사용하면 복잡한 반복문을 단 한 줄의 코드로 표현할 수 있어 가독성이 향상됩니다.
- 이는 코드 유지보수성을 높이고, 버그 발생 가능성을 줄여줍니다.
반응형
'⌨️ Python' 카테고리의 다른 글
[Python] Logging (로깅) & 정규 표현식 (0) | 2024.07.17 |
---|---|
[Python] Exception Handling - 예외처리 (0) | 2024.07.16 |
[Python] Module, Package, Virtual Environment (모듈, 패키지, 가상환경) (0) | 2024.07.15 |
[Python] Database - 데이터베이스 (0) | 2024.07.15 |
[Python] 파일 입출력 (0) | 2024.07.15 |