곱셉 용도
- 1 * 2 = 2
- 2 ** 2 = 4
리스트 확장
test = [1] * 5
test_t = (1,) * 5
print('list {}'.format(test))
print('tuple {}'.format(test_t))
>>list [1,1,1,1,1]
>>tuple (1,1,1,1,1)
가변인자
가변인자 : 이름 그대로 길이가 변할 수 있는 argument를 말한다.
임의의 함수에 인자로 몇개의 데이터가 들어올지 모르게 되는 경우 사용하면 편리
이때 여러 api나 잘 짜여진 코드를 구경하다보면 함수에 *args나 **kwargs라고 되있는 표현들
이게 바로 가변인자를 사용하겠다는 의미이다. 한개와 두개의 차이는 positional과 keyward 인자의 차이
def function(a, b = None):
...
a는 Positional argument, b는 Keyword argument
a는 값이 없는 경우 error가 뜨게 되며, b는 default값으로 None값을 주게 된다.
def save_ranking(*args, **kwargs):
print(args)
print(kwargs)
save_ranking('ming', 'alice', 'tom', fourth='wilson', fifth='roy')
>>('ming', 'alice', 'tom')
>>{'fourth': 'wilson', 'fifth': 'roy'}
*args는 임의의 갯수의 positional arguments를 받음을 의미하며,
**kwargs는 임의의 갯수의 keyword arguments를 받음을 의미한다.
이 때 *args, **kwargs 형태로 가변인자를 받는걸 packing이라고 한다.
위의 예시에서 볼 수 있듯이, 임의의 갯수와 임의의 키값을 갖는 인자들을 전달하고 있다.
positional 형태로 전달되는 인자들은 args라는 tuple에 저장되며,
keyword 형태로 전달되는 인자들은 kwargs라는 dict에 저장된다.
Unpacking
알고리즘을 짜다보면 결과부분을 출력할 때. for문을 이용하여 list를 출력하는 경우 한번에 해결
# list unpacking
test = [1, 2, 3, 4]
print(*test) # 1 2 3 4
# tuple unpacking
test = (5, 6, 7, 8)
print(*test) # 5 6 7 8
출처 : https://hwiyong.tistory.com/193
https://mingrammer.com/understanding-the-asterisk-of-python/
'Algorithm > Algorithm Problem' 카테고리의 다른 글
백준 1251 단어 나누기 (0) | 2022.02.17 |
---|---|
백준 1991 트리 순회 (0) | 2022.02.17 |
백준 15649,15650 N과 M(Backtracking) (0) | 2021.11.21 |
백준 1931 회의실 배정 (0) | 2021.11.16 |
백준 6064 카잉 달력 (0) | 2021.11.04 |