기억나는 것만 담아 보겠습니다. 다 정리하기는 너무 많다...
링크드 리스트는 데이터 요소들이 노드로 구성되어 있으며, 각 노드는 다음 노드를 가리키는 포인터를 포함하는 데이터 구조입니다. 이는 배열과 달리 요소의 삽입과 삭제가 용이합니다.
다양한 형태의 딕셔너리를 사용하여 데이터를 저장하고 접근하는 방식을 의미합니다. 일반적으로 사용되는 딕셔너리 외에도, 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는 클래스 내부에서 정의되지만 클래스나 인스턴스에 관계없이 호출될 수 있는 메서드를 정의할 때 사용합니다.
예시:
class Math:
@staticmethod
def add(x, y):
return x + y
print(Math.add(5, 3))
@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 파일은 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')