정글에서 온 개발자

맵에 리스트 씌우기 귀찮음. 파이썬 * 연산자(Star Expression) 본문

정리

맵에 리스트 씌우기 귀찮음. 파이썬 * 연산자(Star Expression)

dev-diver 2023. 11. 1. 20:34

이런 문법 처음 보는 분 보세요

*a,=map(int,input.split())

Starred Expression(Star Unpacking)

a=[1,2,3]
b=[4,*a,5]  # b=[4,1,2,3,5]
  • 단독으로는 사용될 수 없다.
  • 컨텍스트 안에서 써야 한다. (함수 호출, 리스트 생성 등)
  • 동일한 변수 내에서 여러번 쓸 수 없다.

함수 인자의 언패킹

def func(a,b,c):
	return a+b+c

values = [1,2,3]
result = func(*values)
  • list(*map) , print(*str) 도 이렇게 인자를 언패킹해 넘겨주는 것이였다.

Extended Unpacking(리스트나 튜플 , 맵 등)

  • 언패킹시 일부 원소들은 별도로 할당하고, 나머지는 다른 변수에 할당
first, *rest = [1,2,3,4] # first 1 ,  rest[2,3,4]
  • 활용 (map의 언패킹)
*a, = map(int,[])
a = [*map(int,[])] #위와 같음

참고할만한 활용

  • 리스트 병합
a=[1,2]
b=[3,4,5]
merged = [*a,*b] #1.star expression
merged = a+b   # 2.고전적인 방법
  • 1 방법을 쓰면 성능 측면에서 새로운 메모리를 만든 다음 할당하지 않으므로 약간 더 효율적
    • extend메소드와 유사하게 작동