Today_I_Learned
-
[사용법] virtualenvwrapperToday_I_Learned/Python 2023. 11. 21. 15:41
virtualenv 만 달랑 사용해오다가 virtualenvwrapper 란 패키지를 알게되어 사용법을 기록한다. 간단 설명 virtualenvwrapper 는 virtualenv 모듈의 확장팩 격인 패키지이다. virtualenv로 생성한 가상 환경을 보다 편리하게 사용할 수 있도록 이것 저것(ex. 가상환경 생성/삭제, 실행, 조회 등을 한 줄의 명령어로 제공, 여러 개의 가상환경들을 한꺼번에 관리할 수 있는 기능 등)을 제공하는 패키지이다. 전제 조건 ubuntu 22.04 이상 (필자의 환경) python3.8 ~ 3.11 python3-pip 설치 완료 virtualenv 모듈 설치 완료 설치 python3 -m pip install virtualenvwrapper 이 때 설치 Log를 잘 확인..
-
List 정렬 기준, iterable객체의 요소가 iterable 일 때Today_I_Learned/Python 2023. 11. 1. 16:17
작성 의도 반복 가능한(iterable) 객체의 모든 Element 역시 반복 가능한 객체 일 때 (ex. 2차원 List, [(1, 2, 3), (4, 5, 6), …] 등) sort()나 sorted() 함수를 이용하여 정렬을 진행하면 python에서는 기본적으로 각 Element의 첫 번째 요소를 기준으로 오름차순 정렬을 수행한다. 그러나 각 Element의 첫 번째가 아닌, 특정 순서의 값으로 정렬을 진행하고 싶은 경우엔 sorted() 나 List의 내장 함수인 sort() 함수의 key parameter를 잘 활용해야 한다. (* key parameter는 함수(callable)를 인자로 받는다.) 다음 글을 읽으면 key parameter를 통해 함수를 여러 번 호출하지 않고도 복잡한 정렬을..
-
class method vs. static methodToday_I_Learned/Python 2023. 9. 26. 11:23
공통점 별도 인스턴스 생성없이 클래스를 대상으로 클래스 이름 뒤에 바로 '. ' 오퍼레이터를 붙여서 호출 가능 ex) class ExampleClass: class_name = "ExampleClass" @classmethod def example_class_method(cls): print(f"{self.class_name}: This is classmethod.") @staticmethod def example_static_method(): print(f"{self.class_name}: This is staticmethod.") ExampleClass.example_class_method() >>> ExampleClass: This is classmethod. ExampleCalss.example_..
-
이터레이터 iteratorToday_I_Learned/Python 2023. 9. 17. 11:29
요소(element)를 하나씩 차례대로 꺼낼 수 있는 객체. 이터레이터를 사용하는 이유는 꺼내올 요소 전체를 미리 생성하지 않고, 필요한 값만 하나씩 생성하여 메모리 사용을 줄이기 위함이다. = 지연 평가 방식 lazy evaluation 반복 가능한 객체만이 이터레이터로 변환될 수 있다. 반복 가능한(iterable) 객체: 요소가 여러 개이고 한 번에 요소를 하나씩 꺼낼 수 있는 객체. for 문과 같은 반복 구문에 적 용할 수 있는 리스트 같은 객체. (iterable object ≠ iterator) 객체의 반복 가능 여부는 __dir__(객체) 로 조회하여 ‘__iter__’가 존재하는지 확인하면 된다. __iter__가 있다는 것은 그 객체가 반복 가능하다는 것이지 반드시 이터레이터라는 의미는..
-
Ubuntu22.04 에 Python 구 버전(ex.3.8) 을 기본 버전으로 설정Today_I_Learned/Linux 2023. 6. 3. 19:01
Python Linux에서 Defautl python version 을 바꿀 때 https://linux.how2shout.com/install-python-3-9-or-3-8-on-ubuntu-22-04-lts-jammy-jellyfish/ 1. 원하는 version의 python 설치 1) Add PPA for Python old versions sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa 2) Check Python Versions you want sudo apt-cache policy python(version) 3) Install Python sudo apt install python(..
-
[vi/vim] 드래그 Drag, 복사, 붙여 넣기, 삽입Today_I_Learned/Linux 2023. 4. 20. 23:04
Linux 사용 시 nano 대신 vi 쓰는 연습 중... (작성을 위해 찾다가 알게 된 것인데 요즘 환경들은 vi 를 실행해도 자동으로 vim 이 실행된다 함.. vi 를 실행했을 때 문자열에 Color 가 입혀져 출력되는 건 vim 이 실행된 것이라고 보면 될 듯.) 1. 드래그 효과 단축키 : v / ctrl + v / Shift + v (대문자 V 라고 생각하면 됨.) 1) v : Visual mode 로 전환. Visual mode 전환 후 방향키로 커서를 움직여 원하는 문자열을 드래그 할 수 있다. 일반적으로 문서 작성할 때 드래그하는 것과 동일한 방식으로 동작한다. 2) ctrl + v : Visual Block mode 로 전환. Visual Block mode 는 세로 드래그를 할 수 있..
-
MST 탐색(프림 Prim / 크루스칼 Kruskal)Today_I_Learned/Algorithm 2023. 4. 16. 23:35
1. 일반적인 MST 한 번에 하나의 안전한 간선(Cycle을 발생시키지 않는 간선)을 추가하여 Tree A 를 완성하고 이 때 완성된 Tree A가 MST인지 확인. GENERIC-MST(G, w) A = NULL while A does not form a spanning tree do find an edge (u, v) that is safe for A A = A + (u, v) return A * G 는 Graph 를 의미 2. 프림 알고리즘 개념 현재 선택한 집합 A와 인접하면서, Cut 을 가로지르는 light edge(인접한 Vertex 와의 간선들 중 가중치가 가장 작은 간선)를 선택하여 MST 를 탐색하는 알고리즘. 전제 집합 A는 항상 Tree (Vertex 와 Edge 을 갖는 집합) ..
-
탐욕 Greedy AlgorithmToday_I_Learned/Algorithm 2023. 4. 16. 23:28
개념 현재 상황에서 가장 좋아보이는 값을 사용하는 것. 이전/미래 상황 고려 X 전제 Optimal Substructure Property 충족 (Optimal Substructure Property 란 현재 상황에서 최선으로 보이는 선택지의 하위 선택지 역시 최선의 선택지인 속성을 의미) 특징 Optimal Substructure 가 충족되지 않을 땐 항상 최고의 결과가 나오는 것은 아님.(최고의 결과 근사치 추출 가능) 하지만 계산 속도는 빠르므로 근사치가 필요한 경우에 사용 가능 Ex) 네비게이션 예시 0-1 knapsack 영상 : https://www.youtube.com/watch?v=ZeZgP4vsUuw&list=PL9mhQYIlKEhdvKFh-wVpDuihNQv6C1gSy&index=19 ..