6-1. for 문과 if 문을 한번에 정수를 담은 리스트 mylist 입력했을 때, 리스트의 원소 중 짝수값만 제곱해서 담은 새로운 리스트 리턴 예) [3,2,6,7]이면 최종 리턴 리스트가 [4,36]이 되도록 하는 문제 def solution(mylist): answer = [] for i in range(len(mylist)): if mylist[i] % 2 == 0: answer.append(mylist[i] ** 2) else: pass return answe 6-2. for 문과 if 문을 한번에 - List comprehension의 if 문 파이썬의 list comprehension을 사용하면 한 줄 안에 for문 + if문을 한 번에 처리할 수 있음. mylist = [3,2,6,7] ..
Sequence types이란? int 타입의 인덱스를 통해서 원소에 접근할 수 있는 iterable (예: 리스트, string, 튜플) 4-1. sequence 멤버를 하나로 이어붙이기 문자열 리스트 mylist 입력한 다음에 모두 이어붙인 문자열을 리턴 def solution(mylist): answer = "".join(mylist) return answer 4-2. sequence 멤버를 하나로 이어붙이기 - join str.join(iterable) 사용해서 배열 내 모든 원소들을 이어붙일 수 있음. 4-3. 삼각형 별 찍기 별 * 문자를 이용해 높이가 n인 삼각형 출력 n = int(input().strip()) for i in range(n): print('*'*(i+1)) 4-4. 삼각형..
Iterable이란? 자신의 멤버를 한번에 리턴할 수 있는 객체 (예: 딕셔너리, 리스트, string, 튜플) 3-1. 원본을 유지한채, 정렬된 리스트 구하기 - sorted sort() 함수 사용시 리스트의 원소 정렬 가능 - 원본의 순서 자체를 변경 sorted - 원본의 순서는 변경하지 않고 정렬된 값 구하기 list = [1,2,3,4] list.sort() # 원본 정렬 순서 변경됨 new_list = sorted(list) # 원본 정렬 순서 변경 안됨 3-2. 2차원 리스트 뒤집기 list 원소의 행과 열을 뒤집은 한 값 리턴함. [[1, 2, 3], [4, 5, 6], [7, 8, 9]] → [[1, 4, 7], [2, 5, 8], [3, 6, 9]] map: 리스트의 요소를 지정된 함수..
실험을 돌리는 중에 evaluation에서 아래와 같은 에러가 발생했다. RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasSgemmStridedBatched( handle, opa, opb, m, n, k, &alpha, a, lda, stridea, b, ldb, strideb, &beta, c, ldc, stridec, num_batches)` 구글링해본 결과, 해당 에러에 대한 이유는 크게 3가지라고 한다. Input dimension mismatch Input data error CUDA 버전 conflict 확인 (대부분 CUDA 버전 conflict의 이유가 크다고 함) 따라서 가상환경을 새롭게 파서 CU..
옛날에 대회를 준비하면서 Google Colab에서 Mecab 형태소 분석기를 설치해서 형태소 분석을 실행하고 싶었지만 계속해서 "NameError: name 'Tagger' is not defined" 라는 에러에 부딪혔다. 에러를 핸들링하고 싶었지만, Google Colab에서 어떤 패키지를 설치하더라도 에러가 계속해서 없어지지 않아 eunjeon님의 Mecab을 따로 가져와 사용했다. 다음은 내가 겪은 삽질 과정이다. 1) JDK 설치 내가 사용하는 python 버전에 맞게 설치해줘야 한다. 나같은 경우에는 python3을 사용하기 때문에 python3-dev를 설치했지만 python2를 사용 중이라면 python-dev를 설치해줘야 한다. !sudo apt-get update !sudo apt-g..
pandas를 이용해서 dataframe을 생성, 가공한 뒤 출력할 때 데이터프레임이 전체적으로 다 나오지 않는 경우가 default이다. 즉, 데이터프레임 출력을 한다고 하더라도 안의 내용물이 제대로 다 출력되지 않을 경우가 많다. 데이터프레임 내 내용을 모두 보고자 하는 경우에는 아래 옵션을 이용해 width을 최대로 넓힐 수 있다. import pandas as pd pd.set_option('display.max_colwidth', -1)
랜덤한 seed를 설정해주는 가장 큰 이유는 결과의 무작위성을 잠재우기 위함이다. seed를 설정하지 않고 무작정 코드를 돌리다보면 똑같은 코드를 이용하더라도 일전에 얻은 결과와 다른 결과가 나올 수 있다. 따라서, 결과의 일관성을 보장하기 위해 random seed를 세팅해야 한다. 아래는 내가 주로 사용하는 모든 요소에 대해서 동일한 seed를 적용하는 seed_everything 함수이다. 이거면 왠만한 것에 대해서는 동일한 random seed가 부여된다. def seed_everything(seed: int = 42): random.seed(seed) np.random.seed(seed) os.environ["PYTHONHASHSEED"] = str(seed) torch.manual_seed(s..
Jupyter notebook에서 라이브러리를 설치할 때, pip나 conda 명령어를 사용하다보면 잘 설치되는 라이브러리도 있지만, 중간에 Proceed (y/n)?으로 질문이 나오는 경우 더 설치를 진행할지 말지, 결정해야할 때가 있다. 이때 주로 cmd 환경에서 진행되거나 vscode 상에서라면 cell도 있으면서 cmd 명령어를 입력할 수 있는 창도 있어서 가능하지만, jupyter notebook과 같은 경우 설치 진행 중일 때 키 입력이 터미널 환경으로 전달되지 않기 때문에 -y와 같은 옵션을 먹지 않는다. 다음과 같은 방법을 이용해서 미리 답변을 지정해줄 수 있다. 1) echo 명령어 사용 echo "y" | !pip install [설치하고자 하는 패키지명] 2) 옵션어 추가 !pip..