언어/Python 12

[Python] Garbage Collection

Python의 언어가 가지는 의미를 이때까지 얕게 이해했음을 이번 Garbage Collection(이하 GC) 공부를 통해 확실하게 느꼈다. 프레임워크를 잘 사용하고, 파이썬 함수/자료구조/알고리즘을 적절히 잘 사용하여 효율적으로 코드를 짜면 1차적으로 좋은 신입이 되지 않을까 생각했는데.. 새로운 분야에 눈을 뜬 것 같아서 오히려 좋다. GC는 현대적인 언어에는 거의 필수로 존재하며 개발자의 생산성을 향상해준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. 실제로 현대적인 언어로 오면서 개발자는 메모리를 직접 관리하는 코드를 거의 사용하지 않게 되었다.(어쩐지 아직 경험해..

언어/Python 2024.03.05

[Python] itertools 프로그래밍

파이썬 내장 라이브러리인 itertools는 특정배열에 대하여 순열이나 조합을 이용한 문제를 풀 때 유용하며 자신의 반복자를 만드는 모듈이다. 이 라이브러리에는 상당히 많은 함수들이 내장되어 있기에, 알아두고 가는 것이 많이 도움이 된다. 1. cycle 반복 가능한 객체를 순서대로 무한히 반복하는 iterator 생성 import itertools student = itertools.cycle(['가나다','라마바','사아자']) next(student) # 가나다 # 라마바 # 사아자 # 가나다 # 라마바 ... 2. accumulate 반복 가능한 객체의 누적 합을 계산하여 iterator로 반환하는 함수 보통은 iterator를 반환하기 때문에 아래와 같이 list로 깔끔하게 반환한다. month..

언어/Python 2024.01.16

generator, yield

generator란 이터레이터를 생성해주는 함수이다. 메모리를 효율적으로 사용하면서 반복을 수행하도록 돕는 객체다. 이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 한다. 하지만 제너레이터 함수 내부에는 이 메서드들이 내장되어 있기 때문에 이터레이터보다 훨씬 간단하게 작성할 수 있다. 아래 사이트에서 그림을 가져왔는데, 간단히 이해하기 위해서 이 그림을 읽어보았고 간단하게 구현도 해보았다. def generator(): yield 0 yield 'Alphabet' yield False gen = generator() print(next(gen)) # 0 print(next(gen)) # 'Alphabet' print(next(gen)) # False d..

언어/Python 2023.12.04

VSCode에서 나타나는 File "<stdin>", line 1 에러

파이썬으로 열심히 코드를 쓰면서 여러 자료구조를 정리하는 도중에 무근본 오류코드를 발견했다. 챗 지피티에 물어봐도 모르고 그래서 결국엔 구글링했는데, exit()나 ctrl+z를 실행하니 문제가 해결되었다. 파일의 1번째줄에서 ^표시된 부분에 잘못된 구문으로 인해 오류가 발생했다는 뜻인데, 사실 이런 것이 왜 나타나는지는 아직 잘 모르겠다. 하지만 특별한 코드 상 오류가 아니기 때문에 그냥 명령프롬프트에 명령어만 잘 누르면 해결이 된다.

언어/Python 2023.10.02

파이썬(python) sys.stdin.readline 사용

보통 input()으로 문자열 값을 입력받지만 반복문으로 여러 줄을 입력받아야 할 때는 시간 초과 문제가 발생할 수 있다고 한다. 특히 스택 / 큐 관련 문제에서는 이렇게 여러 줄을 입력받아야 하는 경우가 많아서 시간 초과의 압박이 크다. 따라서 이럴 경우에는 import sys로 모듈을 불러오고 sys.stdin.readline()을 사용하는 것이 좋다. readline()은 한 줄 단위로 입력받기 때문에 개행문자가 같이 받아지므로 주의하고, 정수로 사용할 경우 int()로 덮어줘야 한다. input()은 값의 개행문자를 삭제시켜서 리턴한다. # 한 개의 정수를 입력받을 때 N = int(sys.stdin.readline()) 리스트와 같이 여러 개의 값을 입력받아야 할 경우에는 개행문자의 특징을 이용..

언어/Python 2023.08.04

pip/conda 의미, 가상환경의 정확한 의미

패키지의 관리자(Pip vs Conda) pip : python에 한정된 패키지의 관리자, 가상 환경 별도 필요 conda : 다른 언어를 포함한 패키지 관리자, 가상 환경 생성 포함 가상환경 컴퓨터 별로 호환, 환경이 다른데, 이를 극복하기 위해 내부에 여러 버전의 환경을 만들어주면서 호환에 문제가 없도록 하는 환경이다. Virtualenv: python2부터 사용된 라이브러리 venv : python 3.3부터 기본모듈에 포함됨 conda : Ana+conda = pip + venv + 과학

언어/Python 2023.06.08

파이썬 포멧팅 %, {}, f-string

자잘한 프로젝트, 알고리즘 문제를 풀어보면서 느끼는 것이지만, 포멧팅에 대해 정리가 잘 안 되어서 여러 번 찾다 보니 그냥 공부하기로 마음먹었다. 새벽까지 깨어있을 만큼 공부해야 하는 것들이 참 많지만.. 그럼에도 이번 주제는 정리해야겠다는 생각이 확실히 들어서! 문자열 포멧팅이 무엇일까? 문자열 포맷팅(string formatting) : 문자열 속 특정한 위치에 특정한 값을 삽입해 주는 것. 만약에 문자열 중에 일부가 변할 수 있는 가능성이 있는 경우 문자열 포맷팅을 통해 그 부분만 바꿔줄 수 있다. 밑줄 그은 부분이 핵심이다. 알고리즘 해결과정에서 특히 중요하다고 생각하는데, 프로젝트에서도 간혹 써먹을 것 같다. % 우리가 써먹는 방식은 주로 f-string이었지만, %을 통한 format도 있음을..

언어/Python 2023.05.03

선발대 심화 3주차(재귀함수, class 심화)

재귀함수(self) : 자기 자신을 설정하는 함수 재귀함수의 조건 1. 반복문으로 구현이 가능해야 함 (효율적 변경을 위해 반복문 >> 재귀함수로 바꾸는 것) 2. 종료 조건을 설정 : 반드시 끝나는 지점이 있어야 함 - 종료 조건이 없을 시 복잡도가 한 없이 증가 # 예시 1 def recursional(n): if n >=5: print(n) recursion(n+1) recursional(1) # 1 2 3 4 # 예시 2 def recursion(n): if n None: pass def speak(self): print("동물 소리") class dog(Animal): def speak(self): print("개소리") class cat(Animal): def speak(self): print..

언어/Python 2023.04.27

파이썬 심화과정 week 1

개인과제 리뷰 - 깃을 제대로 사용하지 못함.(공통 문제) 깃에 올릴 필요 없는 파일이 많음.(requirements.text를 제대로 이용하지 못함) commit 내용을 잘 만들 것(나중에 포트폴리오에 그대로 다 올라갈 것들입니다) .gitignore를 잘 사용하기 위해 toptal에 출동! 타입별 메소드(method)(전부 다 암기해야 합니다) 1. 문자열 메소드 count : 문자열 내에서 특정 문자가 몇 개나 있는지 세는 메소드 find : 문자열 내에서 특정 문자열이 처음 나오는 위치를 찾아주는 메소드 특정 문자열이 없을 경우 return -1 index: 문자열 내에서 특정 문자열이 처음 나오는 위치를 찾아주는 메소드 없을 경우 ValueError(find와의 차이) try/except를 수반..

언어/Python 2023.04.12

map, filter, lambda 식 연습

lambda 식을 제대로 이해하지 못해서 프로그래머스를 통해 문제를 풀어보고, 다른 분들의 해답도 보면서 식을 제대로 이해해 보기로 했다. 우선 매우 쉬운 것부터 차근차근 풀어보았다. 보다시피 매우 간단하다. 그냥 빼기만 쓰면 된다. def solution(num1, num2): return num1 - num2 그럼 이것을 lambda 식으로 바꾸면 어떻게 될까? solution = lambda num1, num2 : num1 - num2 물론 이 경우는 위 식이 가장 편하지만.. lambda 식 설명을 하자면, num1 과 num2를 lambda 식에 적용하겠다는 뜻인 [lambda num1, num2] 뒤에는 num1 - num2를 통한 식 계산 이게 기본 형태이다. 그럼 여기서 리스트가 들어가는 ..

언어/Python 2023.03.23