파이썬의 구조분해 할당(destructuring assignment)은 반복 가능한 객체(iterble - 리스트, 튜플 등)의 값을 여러 변수에 한 번에 할당할 수 있는 기능입니다. 이를 통해 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다.
구조분해 할당의 기본 구문은 아래와 같습니다.
변수1, 변수2, ... = 반복가능객체
반복 가능한 객체이기 때문에 여러 변수에 할당이 가능합니다.
리스트와 튜플의 구조분해
리스트나 튜플과 같은 시퀀스 타입(순서가 있는 데이터 구조를 나타내는 객체)에서도 구조분해 할당을 사용할 수 있습니다.
numbers = [1, 2, 3]
first, second, third = numbers
print(first) # 출력: 1
print(second) # 출력: 2
print(third) # 출력: 3
이 예제에서는 numbers 리스트의 각 요소를 first, second, third 변수에 할당합니다.
참고로 언더스코어(_)를 사용하여 특정 값을 무시할 수 있습니다.
numbers = [1, 2, 3]
first, _, third = numbers
print(first) # 출력: 1
print(third) # 출력: 3
이 경우 두 번째 값은 무시됩니다.
애스터리스크(*)를 사용하여 나머지 값들을 리스트로 할당할 수도 있습니다.
x, y, *rest = [1, 2, 3, 4, 5]
print(x) # 출력: 1
print(y) # 출력: 2
print(rest) # 출력: [3, 4, 5]
이 예제에서는 첫 두 값을 x와 y에 할당하고, 나머지 값들은 rest 리스트에 할당합니다.
나머지 값들은 언패킹 되지 않고 리스트에 할당되니 주의하셔야 합니다.
딕셔너리 구조분해
딕셔너리의 키와 값을 구조분해 할 수도 있습니다.
person = {"name": "Yoon", "age": 22, "city": "gyeonggi-do"}
name, age, city = person["name"], person["age"], person["city"]
print(name, age, city) # 출력: Yoon 22 gyeonggi-do
이 예제에서는 딕셔너리의 키를 사용하여 값을 추출하고 있습니다.
items() 메서드를 사용한 구조분해
items() 메서드를 사용하면 키와 값을 동시에 추출할 수 있습니다.
person = {"name": "Yoon", "age": 22, "city": "gyeonggi-do"}
for key, value in person.items():
print(f"{key}: {value}")
아래는 출력 값입니다.
name: Bob
age: 25
city: London
값만 추출하기
value() 메서드를 사용하여 값만 추출할 수 있습니다.
person = {"name": "Yoon", "age": 22, "city": "gyeonggi-do"}
name, age, city = person.values()
print(name, age, city) # 출력: Yoon 22 gyeonggi-do
키만 추출하기
key() 메서드를 사용하여 키만 추출할 수 있습니다.
person = {"name": "Yoon", "age": 22, "city": "gyeonggi-do"}
key1, key2, key3 = person.keys()
print(key1, key2, key3) # 출력: name age city
기본값 설정
존재하지 않는 키에 대한 기본값을 설정할 수 있습니다.
person = {"name": "Yoon", "age": 22}
name = person.get("name", "Unknown")
age = person.get("age", 0)
city = person.get("city", "Unknown")
print(name, age, city) # 출력: Yoon 22 Unknown
중첩된 구조분해
이중 리스트와 같은 중첩된 구조에서도 구조분해를 사용할 수 있습니다.
Doubly_Linked_List = [[1, 2], [3, 4], [5, 6]]
a, b, c = Doubly_Linked_List
print(a) # 출력: [1, 2]
print(b) # 출력: [3, 4]
print(c) # 출력: [5, 6]
이 예제에서 Doubly_Linked_List의 각 내부 리스트를 a, b, c 변수에 할당합니다.
아니면, 중첩된 딕셔너리에서도 구조 분해를 사용할 수 있습니다.
data = {
"user": {"name": "Yoon", "age": 22},
"location": {"city": "gyeonggi-do", "country": "Korea"}
}
user_name = data["user"]["name"]
user_age = data["user"]["age"]
city, country = data["location"].values()
print(user_name, user_age, city, country) # 출력: Yoon 22 gyeonggi-do korea
# 이 글의 내용 중 일부는 Perplexity AI의 도움을 받아 정보를 수집하고 정리하였으며, 추가적인 연구와 개인적인 견해를 더하였습니다.
'파이썬 관련 문법' 카테고리의 다른 글
이진 탐색이란 무엇인가? (0) | 2024.12.10 |
---|---|
ValueError를 피하는 방법: 두 코드의 결과 분석하기 (0) | 2024.12.10 |
불변성이 가져오는 이점: 파이썬 튜플의 효율적인 메모리 관리 (0) | 2024.12.10 |
코드를 간단하게 만드는 법: 파이썬 람다(lambda) 함수 (0) | 2024.12.09 |
파이썬 코딩 테스트를 위한 시간 복잡도 이해하기 (0) | 2024.12.09 |