일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 315. Count of Smaller Numbers After Self
- Python Code
- kaggle
- Substring with Concatenation of All Words
- 30. Substring with Concatenation of All Words
- Regular Expression
- Class
- 파이썬
- concurrency
- 109. Convert Sorted List to Binary Search Tree
- Python
- Python Implementation
- 밴픽
- shiba
- 컴퓨터의 구조
- Generator
- t1
- 43. Multiply Strings
- 시바견
- Decorator
- DWG
- data science
- Convert Sorted List to Binary Search Tree
- 715. Range Module
- attribute
- iterator
- 프로그래머스
- LeetCode
- 운영체제
- Protocol
- Today
- Total
목록Computer Science/Python (32)
Scribbling
class Queue: def __init__(self, size): self.size = size self.q = [0] * size self.cnt = 0 self.head, self.tail = 0, 0 def append(self, val): if self.cnt == self.size: print('Full Queue Error') return False self.cnt += 1 self.q[self.tail] = val self.tail += 1 if self.tail == self.size: self.tail = 0 return True def popleft(self): if self.cnt == 0: print('Empty Queue Error') return False self.cnt -..
클래스 메타프로그래밍은 실행 도중에 클래스를 생성하거나 커스터마이징 하는 기술이다. 클래스 데코레이터와 메타클래스는 이를 위한 방법이다. 메타클래스는 강력하지만, 어렵다. 클래스 데커레이터는 사용하기 쉽지만, 상속 계층 구조가 있는 경우에는 사용하기 어렵다. 1. 런타임에 클래스 생성하기 파이썬 표준 라이브러리에는 collections.namedtuple 이라는 클래스 팩토리가 있다. 클래스명과 속성명을 전달하면 이름 및 점 표기법으로 항목을 가져올 수 있다. 유사한 클래스 팩토리를 만들면서 런타임에 클래스 생성하는 방법을 확인해보자. def record(cls_name, field_names): try: field_names = field_names.replace(',', '').split() exce..
디스크립터를 이요하면 여러 속성에 대한 동일한 접근 논리를 재사용 가능하다. 디스크립터는 __get__(), __set__(), __delete__() 메서드로 구성된 프로토콜을 구현하는 클래스다. property 클래스는 디스크립터 프로토콜을 완벽히 구현한다. 아래 글에서 동적 속성을 구현함에 있어 프로퍼티 팩토리를 이용했었다. https://focalpoint.tistory.com/314 Python: Dynamic attributes and properties (동적 속성과 프로퍼티) 파이썬에서는 데이터 속성과 메서드를 통틀어 속성이라고 한다. 메서드는 단지 호출가능한 속성이다. 프로퍼티를 사용하면 클래스인터페이스를 변경하지 않고도 공개 데이터 속성을 접근자 메 focalpoint.tistory.c..
파이썬에서는 데이터 속성과 메서드를 통틀어 속성이라고 한다. 메서드는 단지 호출가능한 속성이다. 프로퍼티를 사용하면 클래스인터페이스를 변경하지 않고도 공개 데이터 속성을 접근자 메서드(getter & setter)로 대체할 수 있다. 파이썬 인터프리터는 obj.attr과 같은 점 표기법으로 표현되는 속성에 대한 접근을 __getattr__()과 __setattr__() 등 특별 메서드를 호출하여 평가한다. 사용자 정의 클래스는 __getattr__() 메서드를 오버라이드하여 '가상 속성'을 구현할 수 있다. 1. 동적 속성을 이용한 데이터 랭글링 다음과 같은 json data를 랭글링 하는 예제를 살펴보자. { "Schedule": { "conferences": [{"serial": 115 }], "ev..
Thread vs Asyncio 스레드나 코루틴을 통해 콘솔 에니메이션을 구현할 수 있다. 먼저 스레드를 이용하는 코드이다. Console animation can be implemented with either threads or coroutines. First, with thread. import threading import itertools import time import sys class Signal: go = True def spin(msg, signal): write, flush = sys.stdout.write, sys.stdout.flush for char in itertools.cycle('|/-\\'): status = char + ' ' + msg write(status) flus..
img0 = img1 = img2 = 'img' cap0 = cap1 = cap2 = 'cap' dataset = [(img0, cap0), (img1, cap1), (img2, cap2)] list = [(1, 2), (3, 4), (5, 6)] print(*list) for x in zip(*list): print(x) print(*dataset) imgs, caps = zip(*dataset) print(imgs) l1 = 'abc' l2 = '123' l3 = '가나다' for pair in zip(l1, l2, l3): print(pair)
Web downloads in three different styles - sequential download - concurrent.futures - asyncio With heavy input/output workload, we can make the best out of concurrency. Below is the code that downloads flag gif files sequentially. import os import time import sys import requests POP20_CC = ('CN IN US ID BR PK NK BD RU JP' 'MX PH VN ET EG DE IR TR CD FR').split() BASE_URL = 'http://flupy.org/data/..
Basic behavior of Coroutines def coroutine(): print('started') x = yield print('received: ', x) c = coroutine() next(c) c.send(3) 1) "next(c)" or "c.send(None)" primes the coroutine -> coroutine now waits at 'yield' expression 2) c.send(3) sets x to 3, re-executing the coroutine 3) At the end, coroutine raises StopIteration Example: coroutine to compute a running average def averager(): total, c..
Else block For-Else Else block is executed when the 'for loop' was not stopped by any break. for i in range(1, 1): else: print('Else block is executed') for i in range(1, 10): if i == 8: break else: print('Else block is executed') While-Else Works the same for 'for-else'. while False: break else: print('Else block executed') Try-Else try: dangerous_call() after_call() except OSError: log('OSErro..
Sequence Protocol To make a custom data type have Sequence Protocol, you need to implement "__iter__" method. Even though "__getitem__" method is enough for now, you should implement "__iter__" method as well for later compatibility. A classic iterator Below is a classic implementation - not a rolemodel - of an iterator. import re import reprlib class Sentence: def __init__(self, text): self.tex..