본문 바로가기
Dev/Python

파이썬 기초: 자료형 심화 (리스트와 데이터 관리)

by DevGyu0511 2026. 1. 1.
반응형

개요

기본적인 자료 구조를 다루는 방법부터 파이썬 특유의 효율적인 데이터 처리 기법까지 살펴본다.

1. 리스트(List)의 기본 선언과 조작

리스트는 대괄호([]) 를 사용하여 선언하며, 생성 후 요소를 자유롭게 추가하거나 삭제할 수 있다.

리스트 선언 및 추가/삭제

# 리스트 선언 (대괄호 사용)
fruits = ['apple', 'banana']

# 요소 추가 (append, insert)
fruits.append('cherry')      # 맨 뒤에 추가
fruits.insert(1, 'orange')   # 특정 인덱스에 추가

# 요소 삭제 (remove, pop)
fruits.remove('banana')      # 특정 값을 찾아 삭제
popped_item = fruits.pop()   # 맨 뒤 요소를 꺼내며 삭제

2. 지능형 리스트 (List Comprehension)

기본적인 리스트 조작법을 익혔다면, 이제 조건에 따라 값을 조정하며 새 리스트를 만드는 '지능형 리스트'를 사용할 차례다.

조건에 따른 값 추출 및 조정

# 리스트 선언
numbers = [1, 2, 3, 4, 5, 6]

# 예: 짝수만 골라내어 그 값을 제곱한 새 리스트 생성
# [표현식 for 항목 in 반복가능객체 if 조건]
even_squares = [n**2 for n in numbers if n % 2 == 0]
print(even_squares)  # 결과: [4, 16, 36]

3. Dictionary

Dictionary는 키(Key)와 값(Value)이 한 쌍으로 연결된 자료구조다. 중괄호({})를 사용하여 선언하며, 이름표(키)를 통해 데이터를 빠르게 찾아낼 수 있다.

기본 선언과 데이터 조작

# 1. 선언 (중괄호 사용) 및 데이터 접근
user = {'name': 'Alice', 'role': 'admin'}
print(user['name'])  # 출력: Alice

# 2. 데이터 추가 및 수정
user['level'] = 5        # 새로운 키-값 쌍 추가
user['role'] = 'editor'  # 기존 키의 값 수정

# 3. 데이터 삭제
del user['level']        # 특정 키 삭제
removed_role = user.pop('role')  # 키를 삭제하며 값을 반환

KeyError와 get() 메소드

일반적인 대괄호 접근법은 존재하지 않는 키를 호출할 때 프로그램이 강제 종료되는 KeyError를 발생시킨다. 이를 안전하게 처리하려면 get() 메소드를 사용해야 한다.

# 1. 일반적인 접근 (에러 발생 가능성)
# print(user['status'])  # KeyError 발생

# 2. get() 메소드 활용 (안전한 호출)
status = user.get('status', 'offline')
print(status)  # 출력: offline

4. 세트(Set)

세트는 중복을 허용하지 않는 자료형이다. 딕셔너리와 마찬가지로 중괄호({})를 사용하여 선언하지만, 키 없이 값만 나열한다는 점이 다르다.

기본 선언과 데이터 조작

# 1. 선언 (중괄호 사용)
ids = {101, 102, 103}

# 2. 데이터 추가
ids.add(104)      # 단일 요소 추가
ids.update([105, 106])  # 여러 요소 추가

# 3. 데이터 삭제
ids.remove(101)   # 요소 삭제 (값이 없으면 에러 발생)
ids.discard(102)  # 요소 삭제 (값이 없어도 안전함)

리스트를 이용한 활용 (중복 제거)

raw_data = [1, 1, 2, 3, 3, 3]
unique_data = list(set(raw_data))  # 리스트 -> 세트(중복제거) -> 리스트
print(unique_data)  # 결과: [1, 2, 3]

5. 데이터 분리 할당(Unpacking)

데이터 분리 할당은 리스트나 튜플 같은 묶음 데이터를 여러 변수로 나누어 동시에 할당하는 기법이다.

다중 변수 할당과 가변적 분리

# 1. 순서 기반 할당
# 각 인덱스 값이 변수에 순차적으로 1:1 매칭된다.
point = (10, 20, 30)
x, y, z = point  # x=10, y=20, z=30

# 2. 가변적 분리 (별표 연산자 활용)
# 별표(*)가 붙은 변수는 리스트 객체로 자동 할당되어 남은 요소들을 수집한다.
scores = [100, 90, 80, 70, 60]
top, *others, bottom = scores

# 할당 메커니즘:
# top, bottom: 단일 값을 받는 일반 변수 타입 (int)
# *others: 가변 데이터를 담기 위해 파이썬이 리스트 객체로 자동 할당 (list)
# 할당 결과: top = 100; others = [90, 80, 70]; bottom = 60

print(top)     # 100
print(others)  # [90, 80, 70]
print(bottom)  # 60

💡 주의점 및 활용 팁

  1. 괄호의 구분: 리스트는 [], 딕셔너리와 세트는 {}를 사용한다. 특히 세트는 값만 나열하고, 딕셔너리는 Key:Value 형태임을 명심해야 한다.
  2. 데이터 안정성: 딕셔너리 접근 시 KeyError를 방지하기 위해 가급적 get() 메소드를 활용하는 습관을 들인다.
  3. 성능과 용도: 순서가 중요하면 리스트를, 고유한 값의 집합이 필요하면 세트를, 의미 있는 키로 빠른 탐색이 필요하면 딕셔너리를 선택한다.
  4. 효율적 할당: 데이터 분리 할당 시 별표(*)를 활용하면 가변적인 데이터 구조를 매우 깔끔하게 처리할 수 있다.
반응형