[회고] 2025.05.28

SUNGJUN JUNG·2025년 5월 28일

[회고]

목록 보기
4/6

📚 수업 키워드

기억나는 것만 담아 보겠습니다. 다 정리하기는 너무 많다...

🔗 링크드 리스트

링크드 리스트는 데이터 요소들이 노드로 구성되어 있으며, 각 노드는 다음 노드를 가리키는 포인터를 포함하는 데이터 구조입니다. 이는 배열과 달리 요소의 삽입과 삭제가 용이합니다.

📖 다양한 딕셔너리의 종류

다양한 형태의 딕셔너리를 사용하여 데이터를 저장하고 접근하는 방식을 의미합니다. 일반적으로 사용되는 딕셔너리 외에도, OrderedDict, defaultdict 등이 있습니다.

  • 예시:

    from collections import OrderedDict, defaultdict
    
    ord_dict = OrderedDict()
    ord_dict['x'] = 1
    ord_dict['y'] = 2
    
    def_dict = defaultdict(int)
    def_dict['x'] += 1

🔍 람다 함수

람다 함수는 익명 함수라고도 불리며, 간단한 함수를 한 줄로 작성할 때 사용합니다.

  • 예시:
    double = lambda x: x * 2
    print(double(5))

🔒 클로저 함수

클로저 함수는 함수 외부에 있는 변수를 함수 내부에서 캡처하여 사용할 수 있는 함수입니다. 이는 출력값을 저장하고 있을 수 있습니다.

  • 예시:

    def outer_func(x):
        def inner_func(y):
            return x + y
        return inner_func
    
    add_five = outer_func(5)
    print(add_five(10))

🌟 데코레이터란?

데코레이터는 하나의 함수 또는 메서드를 데코레이트(꾸며주는)하는 데 사용되는 도구입니다. 이는 특정 기능을 추가하거나 수정할 수 있습니다.

일반적인 데코레이터

  • @staticmethod: 클래스 안에서, 인스턴스나 클래스에 관계없이 메소드에 접근하기 위해 사용합니다.
  • @classmethod: 클래스를 첫 번째 인자로 하는 메소드를 정의하는 데 사용됩니다.
  • @property: 메소드를 객체의 속성처럼 사용하게 합니다.

🏷️ @staticmethod

@staticmethod는 클래스 내부에서 정의되지만 클래스나 인스턴스에 관계없이 호출될 수 있는 메서드를 정의할 때 사용합니다.

  • 예시:

    class Math:
        @staticmethod
        def add(x, y):
            return x + y
    
    print(Math.add(5, 3))

🏷️ @classmethod

@classmethod 데코레이터는 클래스를 첫 번째 인자로 받는 메서드를 정의할 때 사용됩니다.

  • 예시:

    class Person:
        count = 0
        
        def __init__(self, name):
            self.name = name
            Person.count += 1
    
        @classmethod
        def create_anonymous(cls):
            return cls("Anonymous")
    
    anonymous = Person.create_anonymous()

🔄 제너레이터 및 이터레이터

제너레이터는 이터레이터를 이용하여 하나씩 값을 생성하는 함수입니다. yield는 제너레이터 함수가 값을 하나씩 내보낼 때 사용하는 키워드입니다.

  • 예시:

    def count_up_to(max):
        count = 1
        while count <= max:
            yield count
            count += 1
    
    counter = count_up_to(5)
    for num in counter:
        print(num)

이터레이터는 __iter____next__ 메서드를 구현하여 순회 가능한 객체를 만드는 프로토콜입니다.

  • 예시:

    class Counter:
        def __init__(self, low, high):
            self.current = low
            self.high = high
    
        def __iter__(self):
            return self
    
        def __next__(self):
            if self.current > self.high:
                raise StopIteration
            else:
                self.current += 1
                return self.current - 1
    
    for num in Counter(1, 3):
        print(num)

🏛️ 추상 클래스

추상 클래스는 하나 이상의 메서드가 정의되지 않은 클래스로, 다른 클래스들이 이를 상속받아 구현해야 합니다.

  • 예시:

    from abc import ABC, abstractmethod
    
    class Animal(ABC):
        @abstractmethod
        def sound(self):
            pass
    
    class Dog(Animal):
        def sound(self):
            return "Woof"

📦 init.py의 역할

__init__.py 파일은 Python 패키지의 초기화 파일로, 사용 가능한 모듈을 정의하고 초기화하는 역할을 합니다.

  • 예시:
    # sample/__init__.py
    from .moduleA import foo
    from .moduleB import bar

📊 판다스

판다스(Pandas)는 데이터를 조작하고 분석하기 위한 파이썬 라이브러리로, 특히 구조화된 데이터를 다루는 데 유용합니다.

중요 메소드

  • loc: 레이블을 기반으로 데이터 프레임의 행과 열을 선택하여 데이터를 접근합니다.

    • 예시:
      import pandas as pd
      df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
      print(df.loc[0])
  • merge: 두 데이터 프레임을 특정 기준에 따라 병합(조인)할 때 사용합니다.

    • 예시:
      df1 = pd.DataFrame({'key': ['A', 'B'], 'value': [10, 20]})
      df2 = pd.DataFrame({'key': ['A', 'B'], 'value': [30, 40]})
      merged = pd.merge(df1, df2, on='key')
  • agg: 집계 함수를 사용하여 그룹 데이터를 요약하는 데 사용합니다.

    • 예시:
      df = pd.DataFrame({'A': ['foo', 'bar', 'foo'], 'B': [1, 2, 3]})
      agg_df = df.groupby('A').agg('sum')

0개의 댓글