arr = range(5) = [0, 1, 2, 3, 4]
✔️ 곱셈 및 거듭제곱 연산으로 사용할 때
2 * 2 = 4
2 ** 3 = 8
✔️ 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때
[0] * 3 = [0, 0, 0]
[1, 2] * 3 = [1, 2, 1, 2, 1, 2]
[[3, 4]] * 3 = [[3, 4], [3, 4], [3, 4]]
✔️ 가변인자 (Variadic Parameters)를 사용하고자 할 때
positional arguments만 받을 때
def save_ranking(*args): print(args) save_ranking('ming', 'alice', 'tom', 'wilson', 'roy')
keyword arguments만 받을 때
def save_ranking(*args): print(args) save_ranking('ming', 'alice', 'tom', 'wilson', 'roy') # ('ming', 'alice', 'tom', 'wilson', 'roy')
positional arguments와 keyword arguments를 모두 받을 때
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'}
✔️ 컨테이너 타입의 데이터를 Unpacking 할 때
from functools import reduce
primes = [2, 3, 5, 7, 11, 13]
def product(*numbers):
p = reduce(lambda x, y: x * y, numbers)
return p
product(*primes)
# 30030
product(primes)
# [2, 3, 5, 7, 11, 13]
리스트나 튜플 데이터를 다른 변수에 가변적으로 unpacking 하여 사용하는 형태
numbers = [1, 2, 3, 4, 5, 6] # unpacking의 좌변은 리스트 또는 튜플의 형태를 가져야하므로 단일 unpacking의 경우 *a가 아닌 *a,를 사용 *a, = numbers # a = [1, 2, 3, 4, 5, 6] *a, b = numbers # a = [1, 2, 3, 4, 5] # b = 6 a, *b, = numbers # a = 1 # b = [2, 3, 4, 5, 6] a, *b, c = numbers # a = 1 # b = [2, 3, 4, 5] # c = 6
참조: https://mingrammer.com/understanding-the-asterisk-of-python/
✔️ 문자열 안에 원하는 string 변수가 몇 개 있는지 return 해준다.
a == '123456789011'
a.count('1') = 3
✔️ 파이썬 3.7 이하에서는 아래와 같이 코드를 작성해야 했다.
a = [1, 2, 3, 4]
n = len(a)
if n > 5:
print(f"List is too long ({n} elements, expected <= 5)")
✔️ len을 여러 번 호출하는 상황을 방지하기 위해, len의 출력값을 저장하는 변수 n을 사용하는데 라인 한 줄이 더 필요했다.
✔️ 바다코끼리 연산자를 사용하면 아래와 같이 n을 조건문 안에서 선언하고 값을 대입할 수 있다.
a = [1, 2, 3, 4]
if (n := len(a)) > 5:
print(f"List is too long ({n} elements, expected <= 5)")
✔️ round = 반올림
✔️ math.ceil = 올림
✔️ math.floor = 내림
✔️ math.trunc = 버림