TIL/Python

TIL #10 <집합과 리스트의 차이, Month, *args와 **kwargs >

jojoon2786 2024. 7. 8. 21:01

1. 제일 작은 수 제거하기 (파이썬)

 

틀린 풀이

def solution(arr):
    if arr:
        new = arr.sort()
        new.pop(0)
        set(arr)
        set(new)
        answer = list(arr & new)
    return answer or [-1]

>> .sort 메소드는 값을 return 하지 않는다. new 안에 넣으려고 한다면 차라리 sorted()를 써야했음.

     ㄴ따라서 new 안에 데이터가 없기 때문에 pop을 쓸 수 없음.

>> 집합은 순서가 없기 때문에 집합을 이용해서 풀었을 경우 arr 리스트 인덱스와 달라져 오류가 발생할 수 있음.

 

(해결)

def solution(arr):
    if len(arr)==1:
        return [-1]
    min_arr = min(arr)
    arr.remove(min_arr)
    return arr

>> 제한 조건은 위에서 먼저 조건을 제시해주는 것이 편하다. 나중에 모든 함수에 전처리 과정을 해줘야 할 수도 있음.

 

2. 카테고리별 도서 판매량 집계하기 (SQL)

SELECT CATEGORY, SUM(SALES) AS TOTAL_SALES
FROM BOOK A JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID
WHERE (YEAR(SALES_DATE) = 2022) AND (MONTH(SALES_DATE) = 1)
GROUP BY CATEGORY
ORDER BY CATEGORY

where 절에서 MONTH(SALES_DATE)=01로 썼다가 오류 발생,

ㄴ> MONTH는 date 자료형 함수의 달을 정수형으로 반환하기 때문에 1로 써야함. 01은 문자열 데이터임.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

가변인수 *args, **kwargs

args는 크기가 정해지지 않은 리스트를 인자로 받는 매개변수

 

kwargs는 크기가 정해지지 않은 딕셔너리를 인자로 받는 매개변수

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_info(name="Alice", age=30, country="USA")

kwargs 활용 예시(키와 값을 인자로 입력받음)