반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[Python] 아스테리스크(Asterisk / *) 본문

Algorithm Study

[Python] 아스테리스크(Asterisk / *)

오패산개구리 2021. 7. 18. 16:23
728x90
반응형

정의

 

시퀀스 언패킹 연산자(Sequence Unpacking Operator)로 말 그대로 시퀀스를 풀어 헤치는 연산자를 말한다.

 

주로 튜플이나 리스트를 언패킹 하는 데 사용한다.

 

 

 

예를 들어

 

>>> fruits = [ 'lemon', 'pear', 'watermelon', 'tomato']

>>> fruits

 

[ 'lemon', 'pear', 'watermelon', 'tomato']

 

다음과 같이 fruits라는 리스트를 출력하면 당연히 리스트 형태로 출력된다.

 

 

 

 

만약 이 리스트에서 각 요소의 값만 출력하려면 어떻게 해야 할까?

 

>>> print(fruits [0], fruits [1], fruits [2], fruits [3])

 

lemon pear watermelon tomato

 

이렇게 출력될 것이다.

 

 

 

 

아니면 for 문을 이용하여 출력할 수도 있다.

 

>>> for f in fruits:

                 print(f, end=' ')

 

lemon pear watermelon tomato

 

 

 

하지만 *를 이용하여 언패킹 해주면 매우 간편하게 출력할 수 있다.

 

>>> print(*fruits)

 

lemon pear watermelon tomato

 

(충격)

 

 

 

*는 활용도가 많다.

 

언팩킹 뿐만 아니라 함수의 파라미터가 되었을 때엔 반대로 패킹도 가능하다.

 

>>> def f(*params):

            print(params)

 

...

 

>>> f('a', 'b', 'c')

 

('a', 'b', 'c')

 

분명 params 변수 하나인데 3개의 인자를 전달해도 별 에러 없이 값이 출력되었다.

 

이는 파이썬 3+에서 print() 함수의 기본 동작 원리이기도 하다.

 

 

 

다음과 같이 활용할 수도 있다.

 

>>> a, *b = [1,2,3,4]

>>> a

 

1

 

>>> b

 

[2,3,4]

 

그리고

 

>>> *a, b = [1,2,3,4]

>>> a

 

[1,2,3]

 

>>> b

 

4

 

 

 

마지막으로 ** 이런 식으로 2개를 쓰는 경우도 있다.

 

* 1개는 튜플 또는 리스트 시퀀스 언패킹이고

 

** 2개는 키/값 페어를 언패킹 하는 데에 사용된다.

 

>>> date_info = { 'year': '2020', 'month': '01', 'day': '7' }

>>> new_info = { **date_info, 'day': '14'}

>>> new_info

 

{ 'year': '2020', 'month': '01', 'day': '14' }

 

date_info 값을 언패킹 해주고 'day': '14'의 값으로 업데이트까지 완료했다.

728x90
반응형

'Algorithm Study' 카테고리의 다른 글

[Python] zip() 함수  (0) 2021.07.18
[파이썬 개념] 다중 할당(Multiple Assignment)  (0) 2021.06.30
빅오(big-O), 분할 상한 분석  (0) 2021.06.24