본문 바로가기

Python

3-5. 자료구조 메서드 정리 (append, pop, update 등)

파이썬 자료구조 메서드 정리 타이틀

안녕하세요! 지난 시간에는 독특한 특징을 가진 자료구조인 세트(Set)와 그 핵심인 '중복 제거' 기능, 그리고 집합 연산에 대해 알아보았습니다. 이제 파이썬의 주요 기본 자료구조인 리스트, 튜플, 딕셔너리, 세트의 기본적인 개념을 모두 익히셨을 거예요.

이번 시간에는 이 자료구조들을 더욱 효율적으로 사용하기 위한 다양한 **메서드(Method)**들을 총정리하는 시간을 갖겠습니다. 메서드는 특정 자료형(객체)에 속하여, 그 자료형의 데이터를 조작하거나 특정 작업을 수행하는 함수와 같은 역할을 합니다. 각 자료구조가 제공하는 메서드들을 알면 코드를 훨씬 간결하고 강력하게 작성할 수 있습니다.


Part 1: 리스트(List) 메서드 - 변경 가능한 순서 있는 컬렉션

리스트는 변경 가능한(mutable) 자료구조이므로, 요소를 추가, 삭제, 변경, 정렬하는 등 다양한 메서드를 제공합니다.

1. 요소 추가: append(), insert(), extend()

  • append(item): 리스트의 맨 뒤에 item 하나를 추가합니다.
  • insert(index, item): index 위치에 item을 삽입합니다. 기존 요소들은 뒤로 밀립니다.
  • extend(iterable): 다른 리스트나 튜플 같은 반복 가능한(iterable) 객체의 모든 요소를 리스트의 맨 뒤에 추가합니다.

예시:

Python
 
# 파일 이름: list_methods_add.py

my_list = [10, 20, 30]
print(f"원본 리스트: {my_list}")

# append(): 맨 뒤에 추가
my_list.append(40)
print(f"append(40) 후: {my_list}")

# insert(): 특정 위치에 삽입
my_list.insert(1, 15) # 인덱스 1에 15 삽입
print(f"insert(1, 15) 후: {my_list}")

# extend(): 다른 iterable의 요소들을 추가
another_list = [50, 60]
my_list.extend(another_list)
print(f"extend([50, 60]) 후: {my_list}")

my_tuple = (70, 80)
my_list.extend(my_tuple)
print(f"extend((70, 80)) 후: {my_list}")

 

[VS Code 터미널 출력]

파이썬 리스트 append, insert, extend 메서드 예시

2. 요소 삭제: remove(), pop(), clear()

  • remove(value): 리스트에서 처음 발견되는 특정 value를 삭제합니다. 없으면 ValueError 발생.
  • pop(index): index 위치의 요소를 삭제하고 그 요소를 반환합니다. index를 생략하면 마지막 요소를 삭제/반환합니다.
  • clear(): 리스트의 모든 요소를 삭제하여 빈 리스트로 만듭니다.
  • (del은 메서드가 아닌 파이썬 구문입니다. del my_list[index] 또는 del my_list[start:end]로 사용됩니다.)

예시:

Python
 
# 파일 이름: list_methods_delete.py

my_list = ["apple", "banana", "cherry", "apple", "date"]
print(f"원본 리스트: {my_list}")

# remove(): 값으로 삭제 (첫 번째 'apple'만 삭제됨)
my_list.remove("apple")
print(f"remove('apple') 후: {my_list}")

# pop(): 인덱스로 삭제 및 반환
removed_fruit = my_list.pop(1) # 인덱스 1 (banana) 삭제
print(f"pop(1) 후: {my_list}, 삭제된 과일: {removed_fruit}")

# pop(): 인덱스 없이 마지막 요소 삭제 및 반환
last_fruit = my_list.pop()
print(f"pop() 후: {my_list}, 삭제된 과일: {last_fruit}")

# clear(): 모든 요소 삭제
my_list.clear()
print(f"clear() 후: {my_list}")

# del 구문 사용 예시 (메서드는 아님)
my_new_list = [1, 2, 3, 4, 5]
del my_new_list[0] # 인덱스 0 삭제
print(f"del my_new_list[0] 후: {my_new_list}")
del my_new_list[1:3] # 인덱스 1부터 2까지 슬라이스 삭제
print(f"del my_new_list[1:3] 후: {my_new_list}")

 

[VS Code 터미널 출력]

파이썬 리스트 remove, pop, clear, del 메서드 예시

 

3. 검색 및 정렬: index(), count(), sort(), reverse()

  • index(value): 리스트에서 value가 처음 나타나는 인덱스를 반환합니다. 없으면 ValueError 발생.
  • count(value): 리스트에서 value가 나타나는 총 횟수를 반환합니다.
  • sort(): 리스트의 요소를 오름차순으로 정렬합니다. 리스트 자체를 변경합니다. (내림차순은 sort(reverse=True)).
  • reverse(): 리스트의 요소 순서를 역순으로 뒤집습니다. 리스트 자체를 변경합니다.

예시:

Python
 
# 파일 이름: list_methods_search_sort.py

numbers = [3, 1, 4, 1, 5, 9, 2]
print(f"원본 리스트: {numbers}")

# index(): 값의 인덱스 찾기
print(f"값 4의 인덱스: {numbers.index(4)}")
print(f"값 1의 첫 번째 인덱스: {numbers.index(1)}")

# count(): 값의 개수 세기
print(f"값 1의 개수: {numbers.count(1)}")
print(f"값 7의 개수: {numbers.count(7)}")

# sort(): 오름차순 정렬 (리스트 자체 변경)
numbers.sort()
print(f"sort() 후 (오름차순): {numbers}")

# reverse=True로 내림차순 정렬
numbers.sort(reverse=True)
print(f"sort(reverse=True) 후 (내림차순): {numbers}")

# reverse(): 순서 뒤집기 (리스트 자체 변경)
my_words = ["apple", "banana", "cherry"]
my_words.reverse()
print(f"reverse() 후: {my_words}")

 

[VS Code 터미널 출력]

파이썬 리스트 index, count, sort, reverse 메서드 예시

 


Part 2: 튜플(Tuple) 메서드 - 불변하는 순서 있는 컬렉션

튜플은 불변(immutable) 자료구조이므로, 리스트처럼 요소를 추가, 삭제, 변경하는 메서드는 없습니다. 대신 요소의 정보를 확인하는 메서드를 제공합니다.

1. 검색: index(), count()

  • index(value): 튜플에서 value가 처음 나타나는 인덱스를 반환합니다. 없으면 ValueError 발생.
  • count(value): 튜플에서 value가 나타나는 총 횟수를 반환합니다.

예시:

Python
 
# 파일 이름: tuple_methods.py

my_tuple = (1, 2, 3, 1, 4, 2, 5)
print(f"원본 튜플: {my_tuple}")

# index(): 값의 인덱스 찾기
print(f"값 3의 인덱스: {my_tuple.index(3)}")
print(f"값 1의 첫 번째 인덱스: {my_tuple.index(1)}")

# count(): 값의 개수 세기
print(f"값 2의 개수: {my_tuple.count(2)}")
print(f"값 6의 개수: {my_tuple.count(6)}")

# 불변성으로 인한 오류 (메서드가 아님, 이전 포스팅 복습)
# my_tuple.append(6) # AttributeError
# my_tuple[0] = 9 # TypeError

 

[VS Code 터미널 출력]

파이썬 튜플 index, count 메서드 예시

Part 3: 딕셔너리(Dictionary) 메서드 - 키-값 쌍 컬렉션

딕셔너리는 키를 통해 값에 접근하는 특징을 가지며, 키, 값, 또는 키-값 쌍을 다루는 다양한 메서드를 제공합니다.

1. 키, 값, 아이템 가져오기: keys(), values(), items()

  • keys(): 딕셔너리의 모든 키(Key)를 반환합니다.
  • values(): 딕셔너리의 모든 값(Value)을 반환합니다.
  • items(): 딕셔너리의 모든 (키, 값) 쌍을 튜플 형태로 반환합니다.

이 메서드들은 딕셔너리의 내용을 반복문(for)으로 순회할 때 유용합니다.

예시:

Python
 
# 파일 이름: dict_methods_views.py

person = {
    "name": "홍길동",
    "age": 30,
    "city": "서울"
}

# keys()
all_keys = person.keys()
print(f"모든 키: {all_keys}") # dict_keys(['name', 'age', 'city'])
print(f"키들을 리스트로 변환: {list(all_keys)}") # ['name', 'age', 'city']

# values()
all_values = person.values()
print(f"모든 값: {all_values}") # dict_values(['홍길동', 30, '서울'])
print(f"값들을 리스트로 변환: {list(all_values)}") # ['홍길동', 30, '서울']

# items()
all_items = person.items()
print(f"모든 아이템: {all_items}") # dict_items([('name', '홍길동'), ('age', 30), ('city', '서울')])
print(f"아이템들을 리스트로 변환: {list(all_items)}") # [('name', '홍길동'), ('age', 30), ('city', '서울')]

# 반복문과 함께 사용 예시
print("\n--- 딕셔너리 키와 값 반복 출력 ---")
for key in person.keys():
    print(f"키: {key}, 값: {person[key]}")

print("\n--- 딕셔너리 아이템 반복 출력 ---")
for key, value in person.items(): # 키와 값을 동시에 받아올 수 있음
    print(f"키: {key}, 값: {value}")

 
 

[VS Code 터미널 출력]

파이썬 딕셔너리 keys, values, items 메서드 예시

2. 값 가져오기: get()

  • get(key, default_value): key에 해당하는 값을 반환합니다. key가 없어도 KeyError 대신 default_value (기본값은 None)를 반환하여 안전하게 값에 접근할 수 있습니다.

예시:

Python
 
# 파일 이름: dict_methods_get.py

user_data = {"name": "김코딩", "email": "kim@example.com"}

# 존재하는 키에 접근
user_name = user_data.get("name")
print(f"사용자 이름 (get): {user_name}")

# 존재하지 않는 키에 접근 (기본값 없음)
phone_number = user_data.get("phone")
print(f"전화번호 (get, 기본값 없음): {phone_number}") # None 출력

# 존재하지 않는 키에 접근 (기본값 지정)
address = user_data.get("address", "주소 정보 없음")
print(f"주소 (get, 기본값 지정): {address}")

 
 

[VS Code 터미널 출력]

파이썬 딕셔너리 get 메서드 예시

 

3. 딕셔너리 합치기 및 삭제: update(), pop(), clear()

  • update(other_dict): 다른 딕셔너리의 키: 값 쌍을 현재 딕셔너리에 추가하거나 업데이트합니다.
  • pop(key, default_value): 특정 key에 해당하는 값을 삭제하고 그 값을 반환합니다. key가 없으면 KeyError 발생 (단, default_value 지정 시 오류 대신 기본값 반환).
  • clear(): 딕셔너리의 모든 키: 값 쌍을 삭제하여 빈 딕셔너리로 만듭니다.

예시:

Python
 
# 파일 이름: dict_methods_modify_delete.py

user_profile = {"name": "이수민", "age": 28, "city": "대전"}
print(f"원본 프로필: {user_profile}")

# update(): 딕셔너리 합치기/업데이트
new_info = {"email": "sumin@example.com", "age": 29} # 'age'는 업데이트됨
user_profile.update(new_info)
print(f"update() 후: {user_profile}")

# pop(): 키로 삭제 및 값 반환
removed_city = user_profile.pop("city")
print(f"pop('city') 후: {user_profile}, 삭제된 도시: {removed_city}")

# pop() with default_value: 없는 키 삭제 시 오류 방지
removed_phone = user_profile.pop("phone", "전화번호 정보 없음")
print(f"pop('phone', 기본값) 후: {user_profile}, 삭제 시도: {removed_phone}")

# clear(): 모든 요소 삭제
user_profile.clear()
print(f"clear() 후: {user_profile}")

 
 

[VS Code 터미널 출력]

파이썬 딕셔너리 update, pop, clear 메서드 예시

 


Part 4: 세트(Set) 메서드 - 중복 없는 순서 없는 컬렉션

세트는 중복을 허용하지 않는다는 특징 때문에 요소 추가/삭제 및 집합 연산과 관련된 독특한 메서드를 제공합니다.

1. 요소 추가: add(), update()

  • add(item): 세트에 item 하나를 추가합니다. 이미 있으면 아무 일도 일어나지 않습니다.
  • update(iterable): 다른 반복 가능한(iterable) 객체(리스트, 튜플, 다른 세트 등)의 모든 요소를 세트에 추가합니다. 중복은 자동으로 제거됩니다.

예시:

Python
 
# 파일 이름: set_methods_add.py

my_set = {1, 2, 3}
print(f"원본 세트: {my_set}")

# add(): 요소 추가
my_set.add(4)
my_set.add(2) # 중복이므로 추가되지 않음
print(f"add() 후: {my_set}")

# update(): 여러 요소 추가
new_items = [3, 5, 6, 1]
my_set.update(new_items)
print(f"update() 후: {my_set}")

 
 

[VS Code 터미널 출력]

파이썬 세트 add, update 메서드 예시

(참고: 세트의 출력 순서는 다를 수 있습니다.)

 

2. 요소 삭제: remove(), discard(), pop(), clear()

  • remove(item): 세트에서 item을 삭제합니다. 없으면 KeyError 발생.
  • discard(item): 세트에서 item을 삭제합니다. 없어도 오류 발생하지 않습니다.
  • pop(): 세트에서 임의의 요소를 하나 삭제하고 그 요소를 반환합니다. 비어있으면 KeyError 발생.
  • clear(): 세트의 모든 요소를 삭제하여 빈 세트로 만듭니다.

예시:

Python
 
# 파일 이름: set_methods_delete.py

my_set = {"apple", "banana", "cherry"}
print(f"원본 세트: {my_set}")

# remove(): 특정 요소 삭제
my_set.remove("banana")
print(f"remove('banana') 후: {my_set}")

# discard(): 특정 요소 삭제 (없어도 오류 없음)
my_set.discard("cherry")
print(f"discard('cherry') 후: {my_set}")
my_set.discard("grape") # 없는 요소 삭제 시도
print(f"discard('grape') 후: {my_set}")

# pop(): 임의의 요소 삭제 및 반환
removed_item = my_set.pop()
print(f"pop() 후: {my_set}, 삭제된 요소: {removed_item}")

# clear(): 모든 요소 삭제
my_set.clear()
print(f"clear() 후: {my_set}")

 
 

[VS Code 터미널 출력]

파이썬 세트 remove, discard, pop, clear 메서드 예시

(참고: pop()으로 삭제되는 요소는 실행할 때마다 다를 수 있습니다.)


마무리하며

이번 시간에는 파이썬의 주요 자료구조인 리스트, 튜플, 딕셔너리, 세트가 제공하는 다양한 메서드들을 총정리했습니다. 각 자료구조의 특성에 맞는 메서드들을 익혀두면 데이터를 훨씬 효율적으로 다루고 원하는 작업을 수행할 수 있습니다.

이제 여러분은 파이썬 데이터를 저장하고 관리하며 조작하는 데 필요한 기본적인 도구들을 모두 갖추게 되었습니다.

다음 포스팅에서는 리스트와 딕셔너리를 더욱 간결하고 강력하게 생성할 수 있는 파이썬만의 특별한 문법인 리스트/딕셔너리 내포 표현식에 대해 알아보겠습니다.


궁금한 점이 있다면 언제든지 질문해주세요! 다음 포스팅에서 만나요!

반응형