728x90
✅ 패킹
여러 개의 데이터를 하나로 묶어 변수에 대입하는 것
nums = (1, 2, 3, 4, 5)
✅ 언패킹
여러 개의 데이터를 하나로 묶은 컬렉션을 여러 개의 변수로 나누어 담는 것
(a, b, c, d, e) = nums
print(a, b, c, d, e)
# 1 2 3 4 5
✅ 남은 요소 대입받기
좌변의 변수 중 하나의 변수에 별 기호( * : Asterisk)를 붙이면 남은 요소 전체를 리스트에 담아 대입한다.
✏️ 슬라이싱으로 분리
a = nums[0]
b = nums[1]
arr = nums[2:]
print(a, b, arr)
# 1 2 (3, 4, 5)
✏️ 별 기호( * : Asterisk)
a, b, *arr = nums
print(a, b, arr)
# 1 2 [3, 4, 5]
*arr, a, b = nums
print(arr, a, b)
# [1, 2, 3] 4 5
a, *arr, b = nums
print(a, arr, b)
# 1 [2, 3, 4] 5
✅ 응용
알고리즘 문제를 풀다보면
n을 입력받고 바로 뒤에 n개의 값을 입력받을 때가 있다.
이는 파이썬이 아닌 다른 언어에서 미리 배열의 크기를 선언해주어야 할 때 필요하기 때문에
주어지는 입력 조건이지만 파이썬은 크기와 상관없이 리스트를 만들 수 있어 사실 크게 필요하지 않은 입력 조건이다.
이를 위에 정리한 패킹을 통해 쉽게 변수에 담아보자.
✏️ 주어지는 입력 조건
n개의 학생이 있고, n명의 학생의 시험 점수가 있다.
n명의 학생의 평균 점수를 구해보자.
입력은 n과 학생의 점수 n개가 연속하여 입력된다.
# 예제) 3명의 학생이 각각 70점, 80점, 90점을 받았다.
# input : 3 70 80 90
n, *scores = list(map(int, input().split()))
print(sum(scores) / n)
# 80.0
평소에 했던 방식은 슬라이싱을 사용했었다.
arr = list(map(int, input().split()))
n = arr[0]
scores = arr[1:]
print(sum(scores) / n)
패킹을 사용해서 조금 더 파이써닉하게 해결하면 3줄의 코드를 1줄의 코드로 바꿀 수 있기 때문에 유용하게 사용할 수 있을 것 같다.
728x90
'실전 오류 해결 팁 > Python' 카테고리의 다른 글
[Python] 소수점 자릿수 제한법 (0) | 2023.04.14 |
---|