파이썬 - 튜플 아이템 언패킹
안녕하세요, 미래의 파이썬 마스터 여러분! 오늘은 튜플 언패킹의 흥미로운 세계에 몸을 던져보겠습니다. 여러분의 친절한 지역 컴퓨터 과학 교사로서, 여러분을 이 여정을 안내하는 것을 기대하며 설레고 있습니다. 그럼, 좋아하는 음료수를 준비하고 편하게 앉아서, 튜플 언패킹의 신비를 함께 풀어보겠습니다!
튜플이란 무엇인가요?
언패킹에 들어가기 전에, 튜플이란 무엇인지 빠르게 복습해봅시다. 파이썬에서는 튜플은 순서가 있는, 변경할 수 없는 항목의 모음입니다. 이를 변하지 않는 리스트의 삼촌이라고 생각하면 됩니다. 우리는 괄호 ()
를 사용하여 튜플을 만듭니다.
my_first_tuple = (1, 2, 3)
print(my_first_tuple) # 출력: (1, 2, 3)
이제 우리는 같은 페이지에 있으니, 언패킹을 시작해보겠습니다!
튜플 아이템 언패킹
튜플을 언패킹하는 것은 선물 상자를 열는 것과 같습니다 - 내부에 무엇이 있는지 알지만, 하나씩 꺼내는 것이 흥미로워요. 파이썬에서는 튜플의 값을 개별 변수에 한 번에 대입할 수 있습니다.
기본 언패킹
간단한 예제로 시작해보겠습니다:
# 튜플 생성
fruits = ("apple", "banana", "cherry")
# 튜플 언패킹
fruit1, fruit2, fruit3 = fruits
print(fruit1) # 출력: apple
print(fruit2) # 출력: banana
print(fruit3) # 출력: cherry
이 예제에서는 fruits
튜플을 세 개의 별도의 변수에 언패킹하고 있습니다. 마법 같지 않나요? 하지만, 큰 힘에는 큰 책임이 따르는 것을 기억하세요. 좌측에 있는 변수의 수는 튜플의 항목 수와 일치해야 하며, 그렇지 않으면 파이썬이 오류를 발생시킬 수 있습니다.
변수가 적은 언패킹
일부 항목만 언패킹하고 싶을 때는 어떻게 해야 할까요? 파이썬이 이를 지원합니다:
# 튜플 생성
coordinates = (10, 20, 30, 40)
# 처음 두 개의 항목만 언패킹
x, y, *rest = coordinates
print(x) # 출력: 10
print(y) # 출력: 20
print(rest) # 출력: [30, 40]
여기서는 여분의 항목을 리스트로 수집하기 위해 별표 *
를 사용하고 있습니다. 마치 남은 항목들을 모아두는 캐치 올 바스켓처럼 됩니다.
튜플 언패킹 중 ValueError 발생
이제, 문제가 발생할 때의 상황에 대해 이야기해보겠습니다. 튜플을 다른 수의 변수에 언패킹하려고 시도할 때, 파이썬은 ValueError
를 발생시킵니다. 정사각형 막대를 원형 구멍에 넣으려는 것과 같아서, 그렇게 될 수 없습니다!
# 이 코드는 ValueError를 발생시킵니다
colors = ("red", "green", "blue")
a, b = colors # ValueError: too many values to unpack (expected 2)
이 오류를 피하기 위해서는 항상 변수의 수가 튜플의 항목 수와 일치하거나, 앞서 배운 별표 방법을 사용하는 것이 중요합니다.
별표 (*)를 사용하여 튜플 아이템 언패킹
별표 *
는 튜플 언패킹에서 스위스 Army 톱니칼같습니다. 우리는 이를 남은 항목들을 수집하는 데 사용했지만, 더 많은 일을 할 수 있습니다!
중간 항목 수집
numbers = (1, 2, 3, 4, 5)
first, *middle, last = numbers
print(first) # 출력: 1
print(middle) # 출력: [2, 3, 4]
print(last) # 출력: 5
여기서는 *middle
가 first
나 last
에 할당되지 않은 모든 항목을 수집합니다. 마치 중간 자식처럼, 중간에 있는 모든 것을 얻는 것 같아요!
값 무시
때로는 튜플의 모든 값을 필요로 하지 않을 수 있습니다. 밑줄 _
를 사용하여 쓰레기 변수를 사용할 수 있습니다:
data = ("John Doe", 30, "Software Engineer", "New York")
name, age, *_ = data
print(name) # 출력: John Doe
print(age) # 출력: 30
이 예제에서는 이름과 나이에만 관심이 있으므로, 나머지를 무시하기 위해 *_
를 사용합니다.
실용적인 응용
튜플 언패킹은 단순한 트릭이 아니라, 실제 프로그래밍에서 매우 유용합니다. 다음은 여러분이 이를 사용할 수 있는 몇 가지 시나리오입니다:
-
변수 교환:
a, b = 10, 20 print(f"Before: a = {a}, b = {b}")
a, b = b, a print(f"After: a = {a}, b = {b}")
2. **함수에서 여러 값을 반환:**
```python
def get_user_info():
return "Alice", 25, "[email protected]"
name, age, email = get_user_info()
print(f"Name: {name}, Age: {age}, Email: {email}")
-
딕셔너리에서 키-값 쌍을 반복:
user = {"name": "Bob", "age": 30, "city": "London"} for key, value in user.items(): print(f"{key}: {value}")
튜플 언패킹 방법 요약
여기는 우리가 다룬 튜플 언패킹 방법의 빠른 참조 표입니다:
방법 | 예제 | 설명 |
---|---|---|
기본 언패킹 | a, b, c = (1, 2, 3) |
모든 항목을 개별 변수에 언패킹 |
별표를 사용한 언패킹 | a, *b = (1, 2, 3, 4) |
일부 항목을 언패킹하고, 나머지를 리스트로 수집 |
값 무시 | a, _, c = (1, 2, 3) |
특정 항목을 언패킹하고, 나머지를 무시 |
변수 교환 | a, b = b, a |
두 변수의 값을 교환 |
함수 반환 값 | name, age = get_info() |
함수에서 여러 반환 값을 언패킹 |
그리고 이렇게 끝납니다, 여러분! 여러분은 파이썬에서 튜플 언패킹의 비밀을 풀었습니다. 기억하세요, 연습이 실력을 만든다는 말이 있으니, 이 개념들을 여러분의 코드에서 실험해보세요. 코딩을 즐겁게, 여러분의 튜플이 항상 원활하게 언패킹 되시길 바랍니다!
Credits: Image by storyset