목록Language (122)
우노
리스트(List) 가변(Mutable) : 요소의 추가, 삭제, 변경이 가능합니다. 대괄호 []를 사용하여 생성합니다. 중복된 요소를 가질 수 있습니다. 순서가 있어 인덱스를 통해 요소에 접근 가능합니다. 주로 동적인 데이터 관리에 사용됩니다. my_list = [1, 2, 3] my_list.append(4) # 추가 my_list[1] = 5 # 변경 del my_list[0] # 삭제 튜플(Tuple) 불변(Immutable) : 한 번 생성된 후에는 요소의 추가, 삭제, 변경이 불가능합니다. 소괄호 ()를 사용하여 생성합니다. 중복된 요소를 가질 수 있습니다. 순서가 있어 인덱스를 통해 요소에 접근 가능합니다. 주로 데이터의 불변성이 필요한 경우에 사용됩니다. my_tuple = (1, 2, 3)..
들어가기 앞서, pymysql은 Python에서 MySQL 데이터베이스와 연동하는 데 사용되는 라이브러리입니다. pymysql을 사용하기 위해선 먼저 pymysql 라이브러리를 설치해야 합니다. pip install pymysql 또한, 데이터베이스 쿼리 결과를 pandas의 DataFrame으로 다루기 위해선 pandas 라이브러리도 함께 설치해야 합니다. pip install pandas 예제 코드 MySQL 서버에 연결하고 데이터베이스 쿼리 결과를 DataFrame으로 저장하는 예제 코드를 다뤄보겠습니다. import pymysql import pandas as pd # MySQL 서버에 연결 conn = pymysql.connect( host='your_mysql_host', use..
들어가기 앞서, Python 가상 환경인 venv를 사용하는 이유? 일반적으로 프로젝트 간 패키지 충돌을 방지하기 위해 사용합니다. 자세한 설명은 생략하겠습니다 ㅎㅎ.. venv 사용 방법 가상환경 생성 # python -m venv 가상환경이름 python -m venv .venv 가상환경 활성화 # source 가상환경이름/bin/activate source .venv/bin/activate 가상환경 내부에 필요한 패키지를 설치한 뒤, 해당 환경에서 실험 진행 pip install 패키지이름 가상환경 내부에 설치된 패키지들을 보고 싶다면? pip list 가상환경 비활성화 deactivate 가상환경 삭제 그냥 가상환경 폴더 삭제하시면 됩니다. 참고 https://www.daleseo.com/pyth..
들어가기 앞서, 파이썬 딕셔너리 내부의 특정 키 존재 여부는, 아래와 같은 방식으로 확인할 수 있습니다. dict = {'a' : 1, 'b' : 1, 'c' : 1} if ('c' in dict): print("Good") if ('d' not in dict): print("Bad") 하지만, 해당 방식은 모든 키를 확인해야하기 때문에, 비효율적입니다. defaultdict란? 반면, defaultdict는 모든 키를 확인할 필요가 없습니다. defaultdict는, value를 지정하지 않은 key의 value를 0으로 가집니다. 따라서, 아래와 같은 방식으로 특정 키 존재 여부를 확인할 수 있습니다. from collection..
들어가기 앞서, BOJ의 채점 서버에서, Python의 최대 재귀 깊이는 1,000으로 설정되어있습니다. 만약, 재귀 호출 횟수가 해당 값을 넘어가게되면 RecursionError가 발생하게 됩니다. 따라서, 해당 문제를 해결하기 위해선, 재귀를 사용하지 않거나, sys.setrecursionlimit()을 사용해 최대 재귀 깊이를 변경해야합니다. 최대 재귀 깊이 변경 방법 일반적으로 최대 재귀 깊이를 1,000,000 정도로 크게 설정하면 런타임 에러 없이 실행됩니다. sys.setrecursionlimit(10**6) 참고 https://help.acmicpc.net/judge/rte/RecursionError
pandasql 란? Pandas DataFrame 기반의 SQL을 지원하는 위한 패키지입니다. sqlite의 SQL문법을 지원합니다. 원리는 다음과 같습니다. SQLAlchemy에서 sqlite의 메모리 DB를 한시적으로 생성합니다. python envrionment에서 locals()이나 globals()로 해당 dataframe을 찾아 메모리 DB에 테이블로 올립니다. SQL문으로 데이터를 추출합니다. 따라서, 해당 포스트에선 Pandas DataFrame으로 SQL을 사용하는 방법에 대해서 다뤄보겠습니다. pandasql 설치 pip install -U pandasql globals()로 환경 지정 from pandasql import sqldf dfsql = lambda q: sqldf(q, g..
예제 코드 s = "dcba" s1 = sorted(s) # ['a', 'b', 'c', 'd'] s2 = ''.join(s1) # abcd
예제 코드 # Int를 Char로 변환 print(chr(97)) # a print(chr(122)) # z # Char를 Int로 변환 print(ord('a')) # 97 print(ord('z')) # 122
들어가기 앞서 파이썬에서는 이진 탐색을 쉽게 구현할 수 있도록 bisect 라이브러리를 제공한다. bisect 라이브러리는 ‘정렬된 배열’에서 특정한 원소를 찾아야 할 때 매우 효과적으로 사용된다. bisect 라이브러리에서는 bisect_left() 함수와 bisect_right() 함수가 가장 중요하게 사용되며, 이 두 함수의 시간 복잡도는 O(logN)이다. bisect_left(a, x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드 bisect_right(a, x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드 기본 코드 예를 들어, 정렬된 리스트 [1, 2, 3, 3, 8]이 있을 때, 새로운 데이터..
들어가기 앞서, PS를 진행하다보면, 깊은 복사를 해야하는 경우가 있습니다. Python에선, deepcopy 또는 slicing을 사용해 깊은 복사를 진행할 수 있습니다. 해당 포스팅에선, slicing과 deepcopy를 사용한 깊은 복사 방법을 다뤄보겠습니다. 속도는 slicing이 deepcopy보다 빠릅니다. 1차원 리스트의 깊은 복사 slicing 사용 a = [1, 2, 3] b = a[:] deepcopy 사용 from copy import deepcopy a = [1, 2, 3] b = deepcopy(a) 2차원 리스트의 깊은 복사 slicing 사용 a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = [row[:] for row in a] deepcopy 사용 ..