(서론👩🏻) 수업을 듣다가 2차원 배열의 입력을 제대로 받았는지 확인하는 과정에서 이 unpacking이라는 개념을 새롭게 알게 된 김에 공부해봤다. 쌍으로 묶여져 있는 요소들을 따로따로 빼내는 역할을 한다고 생각하면 된다고 하고, 또 자주 쓰이는 개념이라고 해서 알아보려고 한다.
파이썬에서는 packing(패킹)과 unpacking(언패킹)이라는 개념이 존재한다.
말 그대로 packing(패킹)은 포장되어있는 상태고, unpacking(언패킹)은 그 포장을 풀어헤치는 것이라고 생각하면 좀 더 쉬울 것 같다. 인덱스로 접근이 가능한 iterable 자료형(List, Tuple, Dictionary, Set, Map 등)의 요소들을 하나하나씩 unpacking, 즉, 풀어헤치는 것이다. unpacking은 풀어헤치려는 앞에 *(asterisk,별표)를 붙여주면 끝이다.
설명은 간단하지만, 조금은 생소한 개념이라 말로만 설명하면 이해가 어려우니 예시 코드를 한 번 보자.
예시 코드에서는 2차원 배열을 한 번 풀어헤쳐봤다.
test라는 2차원 배열이 있다.
1. 그냥 출력하기
print(test)
출력 결과:
[[1,2,3,4], [5,6,7,8]]
그냥 출력했을 때는 당연하게도 test라는 2차원 배열이 그대로 출력된다.
2. unpacking
print(*test)
출력 결과:
[1,2,3,4], [5,6,7,8]
unpacking은 풀어헤치려는 객체의 앞에 *를 붙여주면 끝이다.
출력 결과를 한 번 살펴보니 아무래도 2차원 배열의 첫 번째 원소인 [1,2,3,4]와 두 번째 원소인 [5,6,7,8]가 하나씩 출력된 것 같다. 원래의 test에서 한 번 풀어헤쳐진거라고 볼 수 있겠지?🤔
3. 행 별로 unpacking
for row in test:
print(*row)
출력 결과:
1 2 3 4
5 6 7 8
이번에는 test라는 2차원 배열의 각 행들을 풀어헤쳐봤다. 이번에도 간단하게 *만 붙여주면 끝이다.
출력 결과를 살펴보면 궁극적으로 2차원 배열의 각 요소들의 순수한 int 값들만이 출력된 것을 확인할 수 있다. 이런 식으로 unpacking을 해주면 리스트가 아니라 리스트 안의 각각의 요소들을 하나씩 출력해준다.
😎참고할 만한 사이트:
dojang.io/mod/page/view.php?id=2345
'📚Languages > Python3 개념·문법·에러' 카테고리의 다른 글
[Python3 문법] format을 이용해서 소수점 이하 자릿수 표현하기 (0) | 2020.10.24 |
---|---|
[Python3 문법] list(리스트) 내의 최댓값과 그때의 index(인덱스) 값 구하기 (feat.enumerate) (0) | 2020.10.21 |
댓글