파이썬 Python 6

matplotlib.pyplot 흑백 이미지 출력이 정상적으로 안되는 경우 (plt.imshow(), cmap)

matplotlib.pyplot.imshow()로 흑백 이미지를 출력할 때 이상한 색상으로 출력되는 경우가 있습니다. 이미지 확인 먼저, Opencv를 통해 이미지를 불러와서 컬러 그대로 출력해보겠습니다. (Colab에서 실행한 코드입니다.) # 라이브러리 import numpy as np import matplotlib.pyplot as plt import cv2 img_1 = cv2.imread('/content/drive/MyDrive/opencv/cat.jpeg', cv2.IMREAD_COLOR) # 이미지를 [B, G, R] 순의 numpy 객체로 반환 img_rgb = cv2.cvtColor(img_1, cv2.COLOR_BGR2RGB) plt.imshow(img_rgb) plt.show() ..

파이썬 Python 2021.12.23

[파이썬] sys.setrecursionlimit() (재귀 최대 깊이 설정)

파이썬으로 재귀를 사용해 문제를 풀 때 특히, DFS, BFS 문제를 풀 때 예시에서 답은 잘 나오는데, 정답 제출을 하면 런타임 에러를 접하게 되는 경우가 있습니다. 대부분이 파이썬의 재귀 최대 깊이의 기본 설정이 1,000회 이기 때문에 런타임 에러가 발생하는 경우입니다. 이런 문제를 해결하기 위해서는 아래와 같이 코드를 작성해주면 됩니다. import sys sys.setrecursionlimit(10 ** 6) 위와 같이 코드의 상단에 sys.setrecursionlimit(10**6)을 작성해주면 재귀의 최대 깊이가 10**6으로 바뀌게 됩니다. ( 필요에 따라 안의 숫자를 설정해주면 됩니다. ) 유의해야할 점이 있습니다. PyPy에서는 sys.setrecursionlimit()으로 임의로 재귀..

파이썬 Python 2021.09.22

[파이썬] for - else 문 ,while - else 문 (반복문 - else)

알고리즘 문제를 풀 때마다 반복문의 loop를 마친 후에 확인 과정을 위해 변수를 하나 더 설정하는게 뭔가 불편해서 방법이 없나 찾아봤습니다. 파이썬에서는 for-else 또는 while-else를 사용하면 그런 찝찝함을 해소할 수 있습니다. 이렇게 코드를 작성하면 반복문이 break가 되지 않고 loop를 끝까지 마친다면 else에 있는 코드를 실행합니다. for - else 를 예시로 들어서 한번 확인해봅시다. 기존의 코드부터 보겠습니다. a = [3, 5, 7, 15, 21] check = False # 짝수가 있는지 판단 for i in a: if i % 2 == 0: check = True break if check == False: print('짝수가 없습니다.') ==> 짝수가 없습니다. 이..

파이썬 Python 2021.08.04

[파이썬] 클래스 상속, 메서드 오버라이딩 (예시를 통한 설명)

전 포스팅에서 파이썬의 클래스(class)를 알아봤습니다! 이번에는 클래스의 상속(inheritance)과, 메서드 오버라이딩(method overriding)에 대해 정리해보겠습니다. 상속(inheritance) 클래스 간에도 상속의 개념을 사용합니다. 상속은 흔히 알고있는 뜻과 같습니다. (무언가를 물려받는) 어떤 클래스를 정의할 때 이미 정의된 다른 클래스의 속성을 물려받는 절차를 말합니다. 이때 속성을 물려주는 클래스를 슈퍼 클래스(super class) ('부모 클래스'라고도 부릅니다.) 속성을 상속하는 클래스를 서브 클래스(sub class) ('자식 클래스'라고도 부릅니다.) 라고 합니다. 상속을 받는 방법은 간단합니다. 아래의 예시처럼, 서브 클래스를 선언할 때 ()안에 슈퍼 클래스를 포함..

파이썬 Python 2021.06.22

[파이썬] 클래스와 객체, 인스턴스를 이해해보자 (예시를 통한 설명)

파이썬의 클래스(class)와 객체(object), 인스턴스(instance)에 대해 정리해보겠습니다. 클래스(class), 객체(object), 인스턴스(instance)를 구분해보자. 클래스(class)는 주로 어떤 틀에 비유됩니다. 즉, 똑같은 무엇을 계속 만들어 내는 것에 비유됩니다. 그 이유는 클래스는 객체(object)를 정의하고 만들기 위한 변수와 메서드의 집합이기 때문입니다. 저는 와플을 찍어내는 틀에 클래스를 비유해보겠습니다. 그러면 이런 틀에 의해서 만들어진 하나하나의 와플은 객체(object)로 비유할 수 있습니다. 클래스(class)에 의해 생성된 이런 객체(object)들은 서로 영향을 끼치지 않습니다. 틀을 이용해 두 개의 와플을 만들었다고 해봅시다. 클래스를 이용해 두 개의 객..

파이썬 Python 2021.06.22

[파이썬] 깊은 복사와 얕은 복사 개념, 예제

파이썬의 깊은 복사와 얕은 복사의 개념을 알아보고 예제를 확인하겠습니다. 객체의 복사를 논하기 전에, 가변(mutable) 객체와 불변(immutable) 객체가 무엇인지 알아보겠습니다. 가변 객체, 불변 객체 가변 객체 : 선언한 이후에도 값을 수정할 수 있는 객체. list, set, dictionary, 사용자가 작성한 대부분의 class가 해당됩니다. 불변 객체 : 선언한 이후에 값을 수정할 수 없는 객체. 숫자형(int, float), bool, str, tuple 등이 해당됩니다. 일반적으로 불변 객체는 가변 객체보다 효율적입니다. 비교를 위한 조작의 단순화가 가능하고, 프로그램 내에 고정된 부분이 많아져 프로그램의 성능 개선에 도움이 된다고 합니다. 가변 객체인 리스트와 불변 객체인 튜플을 ..

파이썬 Python 2021.06.19