본문 바로가기

분류 전체보기

(118)
콘텍스트 관리자와 else 블록 if문 이외에서의 else 불록Python에서 else 블록은 조건문(if) 이외에도 반복문(for, while)과 예외 처리문(try)에서 사용될 수 있다. 각 경우에 대해 자세히 설명하겠다.1. 반복문에서의 else 블록반복문에서 else 블록은 반복문이 정상적으로 완료되었을 때 실행된다. 여기서 "정상적으로"라는 의미는 반복문이 break 문으로 중단되지 않고 끝까지 실행된 경우를 말한다.for 반복문에서의 elsefor i in range(5): if i == 3: breakelse: print("반복문이 중단되지 않았습니다.")# 결과: (출력 없음, 3에서 break로 종료)for i in range(5): print(i)else: print("반복문이 중단되..
제너레이터 (Generator) WordIterator단어별로 반복하는 클래스는 주어진 텍스트에서 단어를 추출하고, 이를 반복 가능한 형태로 제공하는 기능을 하는 클레스를 만들기 위해 re.findall 함수를 사용해 텍스트에서 단어를 추출하고, 이를 반복 가능한 객체로 반환하는 클래스를 만들어 보겠다.import reclass WordIterator: def __init__(self, text): self.words = re.findall(r'\\b\\w+\\b', text) def __getitem__(self, index): return self.words[index] def __len__(self): return len(self.words) def __repr__(sel..
연산자 오버로딩 단항 연산자 오버로딩벡터(Vector) 클래스를 만들고, 몇 가지 단항 연산자를 오버로딩해보겠다. 이를 통해 부호 변경(-), 절대값(abs), 그리고 반전(~) 연산자를 벡터에 대해 사용할 수 있도록 하겠다.class Vector: def __init__(self, x, y): self.x = x self.y = y def __neg__(self): """부호 변경: -벡터""" return Vector(-self.x, -self.y) def __abs__(self): """벡터의 절대값 (유클리드 거리)""" return (self.x ** 2 + self.y ** 2) ** 0.5 def __invert..
다중 상속 (Multiple inheritance) 내장 자료형 상속파이썬 내장 자료형을 상속할 때, 종종 특정 메소드를 오버라이드했음에도 불구하고 예상대로 동작하지 않는 경우가 발생할 수 있다. 이는 파이썬이 내부적으로 C로 구현된 메소드들을 직접 호출하기 때문이다. 여기서는 이 문제의 원인과 이를 해결하는 방법에 대해 설명하겠다.원인파이썬의 내장 자료형(예: list, dict, str 등)은 대부분 C 언어로 구현되어 있으며, 이 때문에 성능이 매우 뛰어나다. 하지만 이로 인해 특정 메소드들이 내부적으로 직접 C 함수 호출을 통해 구현되어 있다. 따라서, 이러한 메소드를 오버라이드해도 파이썬의 특정 연산이 직접 C 함수를 호출하면, 오버라이드된 메소드가 무시될 수 있다.예를 들어, dict를 상속하여 setitem메소드를 오버라이드했을 때, upda..
단일 연결 리스트 (Singly Linked List) 단일 연결 리스트 (Singly Linked List)단일 연결 리스트(Singly Linked List)는 선형 자료 구조 중 하나로, 각 노드가 하나의 데이터 요소와 다음 노드를 가리키는 포인터를 포함하는 형태로 구성된다. 연결 리스트는 배열과 달리 요소들이 메모리상에 연속적으로 배치되지 않으며, 각 노드가 다음 노드를 가리키고 있어 동적 메모리 할당이 가능하다.구조노드 (Node): 연결 리스트의 기본 구성 요소로, 데이터와 다음 노드를 가리키는 포인터를 포함한다.데이터 (Data): 노드가 저장하는 값.다음 (Next): 다음 노드를 가리키는 포인터.헤드 (Head): 리스트의 첫 번째 노드를 가리키는 포인터. 리스트의 시작점이다.꼬리 (Tail): 리스트의 마지막 노드를 가리키는 포인터 (단일 ..
덱 (Deque) 덱 (Deque) 자료 구조덱(Deque, Double-Ended Queue)은 큐와 스택의 특성을 모두 가지고 있으며, 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이다. 덱은 다음과 같은 두 가지 유형이 있다.입력 제한 덱 (Input-Restricted Deque): 한쪽 끝에서만 삽입이 가능하고, 양쪽 끝에서 삭제가 가능하다.출력 제한 덱 (Output-Restricted Deque): 양쪽 끝에서 삽입이 가능하고, 한쪽 끝에서만 삭제가 가능하다.덱의 주요 연산덱은 다음과 같은 주요 연산을 지원한다.Add to Front (addFront): 덱의 앞쪽 끝에 요소를 추가한다.Add to Rear (addRear): 덱의 뒤쪽 끝에 요소를 추가한다.Remove from Front (removeF..
인터페이스 프로토콜(Protocol)파이썬에서 프로토콜(Protocol)은 인터페이스와 비슷한 개념으로, 특정 역할을 완수하기 위한 메서드 집합을 정의한다. 프로토콜은 타입 힌팅(type hinting)과 정적 타입 검사(static type checking)를 지원하는 도구로 사용될 수 있다. 파이썬의 typing 모듈에서 제공하는 Protocol 클래스를 사용하여 프로토콜을 정의할 수 있다.프로토콜의 개념프로토콜은 다음과 같은 특징을 가진다:명시적 구현 강제 없음: 클래스가 특정 프로토콜을 명시적으로 구현하지 않더라도 해당 프로토콜에 정의된 메서드를 모두 구현하고 있다면 그 프로토콜을 따르는 것으로 간주된다.유연성: 다양한 클래스들이 동일한 프로토콜을 따를 수 있어 코드의 유연성이 증가한다.타입 힌팅 지원: 정..
원형 큐(Circular Queue) 원형 큐(Circular Queue)는 일반적인 큐의 한계를 극복하기 위해 설계된 자료 구조이다. 일반적인 큐는 배열을 사용하여 구현할 때, 요소를 추가하거나 제거할 때마다 배열의 앞쪽 요소들을 이동시켜야 하는 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 원형 큐는 배열의 처음과 끝이 연결된 형태를 사용하여, 공간을 효율적으로 사용할 수 있다.원형 큐의 특성고정된 크기: 원형 큐는 고정된 크기의 배열을 사용하여 구현된다.Front와 Rear 포인터: 큐의 앞과 뒤를 가리키는 두 개의 포인터가 있다. front는 큐의 앞쪽 요소를 가리키고, rear는 큐의 마지막 요소를 가리킨다.원형 배열: 배열의 마지막 인덱스 다음에는 배열의 첫 번째 인덱스가 온다. 즉, 배열이 끝나면 다시 처음으로 돌아간다...

728x90