본문 바로가기
알고리즘

[파이썬] asterisk( * )

by 자바지기 2021. 10. 19.
반응형

백준 1629번 문제를 풀고 다른 사람의 답을 보았는데 신기한 답이 있었다.

단 한 줄로 문제를 해결하였다.

print(pow(*map(int,input().split())))

이것을 보고 * 에 대해 알아보기로 하였다.


기존에는 * 기호를 곱셈, 거듭제곱, 리스트 확장에만 사용하였다.

 

1. * 은 가변인자를 사용할 때 쓰일 수 있다.

  • *args, **kwargs

args와 kwargs는 각각 다음과 같이 쓰인다.

 

def args(*args):
	print(args)

def kwargs(**kwargs):
	print(kwargs)
    
args(1,2,3,4)   # (1,2,3,4)
kwargs(a=1,b=2) # {'a'=1,'b'=1}

위의 예제의 출력결과를 보면 args는 tuple, kwargs는 dict에 저장되어 출력되는 것을 볼 수 있다.

 

2.  Unpacking

위와는 반대로 리스트나 튜플을 순회할 수 있다.

다음의 예시를 살펴보자

array = [1,2,3,4]
print(*array) 	# 1 2 3 4

tuple = (1,2,3,4)
print(*tuple)	# 1 2 3 4

*a,b = array
print(a,b)	# [1, 2, 3] 4
a,*b = array
print(a,b)    	# 1, [2, 3, 4]
a,*b, c = array
print(a,b,c)	# 1, [2, 3] 4

 

* 을 사용하여 변수에 가변적으로 할당하는 것도 가능하다.

반응형

댓글