본문 바로가기

개념

(24)
[Python] 제네레이터 (generator) 예시 Python 제네레이터 (generator)는 반복자(iterator)를 만드는 함수입니다. 일반적으로 반복자는 메모리에 모든 값을 로드하여 사용합니다. 그러나 제네레이터는 값을 필요할 때마다 생성하므로 대규모 데이터 집합을 다룰 때 효율적입니다. 1. 개념 제네레이터 함수는 일반 함수와 동일한 방법으로 정의되지만, 일반적으로 yield 키워드를 사용하여 값을 반환합니다. 제네레이터 함수가 호출되면, 함수 내의 코드가 실행되는 대신 제네레이터 객체가 반환됩니다. 이 객체는 제네레이터 함수 내의 코드를 실행하는 데 사용됩니다. 제네레이터 함수는 yield를 만날 때마다 값을 생성합니다. 제네레이터는 값을 생성한 후 일시 중지됩니다. 함수가 다시 호출되면 일시 중지된 지점에서 다시 시작하고, yield를 만..
[Python] 리스트 컴프리헨션 (list comprehension) Python에서 리스트 컴프리헨션(List Comprehension)은 리스트를 만들기 위한 간결하고 간편한 방법입니다. 다음은 간단한 리스트 컴프리헨션의 예시입니다. 1. 설명 numbers = [1, 2, 3, 4, 5] squares = [x**2 for x in numbers] print(squares) 위의 코드에서 numbers라는 리스트가 주어졌을 때, squares라는 리스트를 만들기 위해 리스트 컴프리헨션을 사용합니다. squares의 각 요소는 numbers의 각 요소를 제곱한 값입니다. 리스트 컴프리헨션은 기본적으로 다음과 같은 구조를 가집니다. [expression for variable in iterable if condition] 위의 코드에서 expression은 variabl..
[파이썬] 코사인 유사도 (Cosine Similarity) 예제 코드 코사인 유사도는 두 벡터 사이의 유사성을 측정하는 데에 사용되는 일반적인 방법 중 하나입니다. 파이썬에서는 다음과 같이 코사인 유사도를 계산할 수 있습니다. 1. 예제 코드 먼저, 두 벡터를 정의해야 합니다. 파이썬에서는 보통 리스트나 NumPy 배열을 사용하여 벡터를 표현합니다. 예를 들어, 다음과 같이 두 개의 벡터를 정의할 수 있습니다. vector1 = [1, 2, 3, 4, 5] vector2 = [2, 3, 4, 5, 6] 이제 두 벡터의 코사인 유사도를 계산하려면 다음과 같은 공식을 사용합니다. cosine_similarity = dot_product / (magnitude1 * magnitude2) 여기서 dot_product는 두 벡터의 내적(dot product)을 나타내고, magni..
[파이썬] all(), any() 함수 사용법 all() 함수와 any() 함수는 파이썬의 내장 함수로, 둘 다 하나 이상의 불리언(bool) 값을 받아서 해당 값들의 집합에 대한 조건을 검사하여 결과를 반환합니다. 1. all() all() 함수는 인자로 받은 iterable의 모든 요소가 참이면(True) True를 반환하고, 그렇지 않으면 False를 반환합니다. iterable은 리스트(list), 튜플(tuple), 세트(set), 딕셔너리(dict) 등의 컨테이너 자료형이 올 수 있습니다. # all() 함수 예제 lst1 = [True, True, True] lst2 = [True, False, True] print(all(lst1)) # True print(all(lst2)) # False 2. any() any() 함수는 인자로 받은..
[파이썬] 네임 맹글링 (name mangling) 네임 맹글링(name mangling)은 파이썬에서 클래스의 속성 이름을 바꾸는 기능입니다. 일반적으로 클래스 내에서 속성 이름을 _ 두 개로 시작하는 것으로 정의하면, 이 속성은 자동으로 네임 맹글링이 되어 _클래스명__속성이름 으로 변경됩니다. 1. 예제 코드 class MyClass: def __init__(self): self.__private_attr = 42 def get_private_attr(self): return self.__private_attr MyClass의 __private_attr 속성은 실제로 _MyClass__private_attr으로 맹글링됩니다. 이렇게 맹글링하는 이유는, 파이썬에서는 클래스의 속성이 기본적으로 public으로 취급됩니다. 하지만, 어떤 경우에는 클래스 ..
[파이썬] 매직 메소드란 파이썬 매직 메소드는 파이썬에서 객체 지향 프로그래밍을 구현하는 데 중요한 역할을 합니다. 이 메소드들은 __로 시작하고 끝나는 특별한 메소드입니다. 이 메소드들은 내부적으로 파이썬 인터프리터에 의해 호출되며, 사용자가 직접 호출하는 것이 아니라 자동으로 호출됩니다. 1. 개념 매직 메소드는 객체의 생성, 소멸, 문자열 표현, 연산자 오버로딩, 컨테이너 타입 지원 등 다양한 기능을 지원합니다. 이를테면, __init__ 메소드는 객체 생성 시 초기화를 위해 호출되며, __str__ 메소드는 객체를 문자열로 변환해 출력하는 데 사용됩니다. 아래는 몇 가지 대표적인 매직 메소드의 예시입니다. __init__(self[, ...]): 객체가 생성될 때 호출되는 생성자 메소드입니다. __del__(self): ..
[파이썬] BFS 예제 코드 BFS(Breadth-First Search)는 그래프에서 너비 우선 탐색을 수행하는 알고리즘으로, 특정 노드에서 시작하여 인접한 노드를 모두 방문한 후에 다음 노드로 이동하는 방식으로 탐색합니다. 즉, 가까운 노드부터 탐색을 시작하여 먼 노드로 이동하며 탐색합니다. BFS는 주로 최단 경로를 찾는 문제에서 사용됩니다. BFS 알고리즘은 큐(Queue) 자료구조를 사용하여 구현할 수 있습니다. 먼저 탐색을 시작하는 노드를 큐에 삽입합니다. 그리고 큐에서 하나의 노드를 꺼내서 해당 노드의 인접한 노드들을 모두 큐에 삽입합니다. 이 때, 이미 방문한 노드를 다시 큐에 삽입하지 않도록 방문한 노드를 체크해야 합니다. 큐가 빌 때까지 이 과정을 반복하며 모든 노드를 탐색합니다. 1. 예제 코드 아래는 Pytho..
[파이썬] DFS 구현 DFS는 깊이 우선 탐색(Depth First Search)의 약자입니다. 이는 그래프에서 모든 노드를 탐색하는 알고리즘 중 하나입니다. 그래프는 노드와 간선으로 구성되며, 간선은 노드와 노드를 연결하는 경로를 나타냅니다. DFS는 특정 노드에서 시작하여 그래프의 모든 노드를 방문하며, 이때 방문한 노드는 스택(stack)에 저장됩니다. 파이썬으로 DFS를 구현할 때에는 일반적으로 재귀 함수(recursive function)를 사용합니다. 이때, 방문한 노드를 저장하기 위해 스택 대신에 파이썬의 리스트(list)를 사용할 수 있습니다. 1. 재귀함수로 구현 # 그래프를 인접 리스트로 구현한 예시입니다. graph = { 'A': ['B', 'C'], 'B': ['A', 'D', 'E'], 'C': ['..