Python Asterisk('*'의 여러가지 역할)

SSW·2022년 7월 11일
0

Python

목록 보기
1/5

1. 연산자

기본적으로 python에서 많이 사용되는 * 연산자에 대해 누구나 잘 알 것이다. 아래 코드와 같이 * 한개는 곱셈 연산자, ** 두개는 거듭제곱 연산자로 사용된다.
* Code

# '*' 한개(곱셈)
a = 3 * 4

# '**' 두개(거듭제곱)
b = 3 ** 4

print(a)
print(b)

* Output

12
81

2. Unpacking

*은 list, tuple, dictionary 자료형 앞에 붙으면 unpacking의 역할을 한다. 즉, list, tuple, dictionary 자료형 앞에 붙이게 될 경우 list, tuple, dictionary 안에 있는 값들을 풀어 각각으로 분해해준다는 의미이다.

* Code

# list
example1 = [1, 4, 7, 3, 2, 9]
print(*example1)

# tuple
example2 = (3, 5, 2, 1)
print(*example2)

# dictionary
example3 = {1:'file', 2:'edit', 3:'view', 4:'navigate'}
print(*example3)

* Output

1 4 7 3 2 9  # example1
3 5 2 1  # example2
1 2 3 4  # example3

위의 code와 output을 살펴보면 list, tuple, dictionary 모두 *을 붙임으로써 unpacking이 잘 되는 것을 확인할 수 있다. 추가적으로 dictionary의 경우 key에 대한 값들이 unpacking되어 출력되는 것을 알 수 있다.

추가적으로 다른 형태의 unpacking의 역할로 사용할 수 있는데 아래 코드를 살펴보자.
* Code

# list
example1 = [1, 4, 7, 3, 2, 9]
a, *b, c = example1
print(a, b, c)
d, e, *f, g = example1
print(d, e, f, g)
h, i, *j = example1
print(h, i, j)

# tuple
example2 = (3, 5, 2, 1)
a, *b = example2
print(a, b)

* Output

1 [4, 7, 3, 2] 9  # print(a, b, c)
1 4 [7, 3, 2] 9  # print(d, e, f, g)
1 4 [7, 3, 2, 9]  # print(h, i, j)
3 [5, 2, 1]  # print(a, b)

위의 output과 같이 *b, *f, *j와 같이 변수로 사용된다면 우변의 list나 tuple형 자료형은 unpacking이 되고, 각 변수에 할당된 후 *이 붙은 변수는 우변의 자료형이 list, tuple인지에 관계 없이 무조건 list로 packing되어 저장된다.

  • Tip!
    print() 함수는 굉장히 느리기 때문에 많이 사용할수록 시간이 오래 걸린다. 그러므로 List에 담겨있는 값들을 print(list) 함수를 사용하여 한 줄에 반복 출력할 때 for문으로 반복 출력하는 것 보다 print(*list)를 활용하는 것이 더 빠르다. 즉, print()함수를 쓰는 횟수를 줄이는 것이 좋다는 의미이다.
profile
ssw

0개의 댓글