Bomb Kirby Running
본문 바로가기

파이썬19

파이썬의 얕은 복사와 깊은 복사 파이썬에서 데이터를 복사할 때 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)의 차이를 명확히 이해하는 것은 중요한 개념입니다. 두 방식은 특히 리스트나 딕셔너리 같은 가변 객체(Mutable Object)를 다룰 때 데이터 처리의 동작 방식을 크게 좌우합니다. 이 글에서는 이 두 복사 방식의 동작 원리, 차이점, 그리고 올바르게 사용하는 방법에 대해 알아보겠습니다.1. 객체의 복사란 무엇인가?객체를 복사한다는 것은 특정 데이터의 새로운 사본을 생성하는 것을 의미합니다. 복사의 목적은 원본 데이터를 변경하지 않고 독립적으로 사용하거나, 특정 작업을 수행한 뒤 원본과 복사본을 비교하려는 경우가 많습니다.2. 얕은 복사(Shallow Copy)얕은 복사는 가장 바깥쪽 객체만 복사하고, 내.. 2024. 11. 21.
과일 장수 [프로그래머스 lv1] 문제. 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만.. 2024. 4. 4.
스택과 큐 /백준 1874 1. 스택 스택(Stack)은 데이터를 저장하고 검색하는 데 사용되는 추상 데이터 구조 중 하나로, 데이터의 삽입과 삭제가 한쪽 끝에서만 이루어지는 선형 자료 구조입니다. 스택은 후입선출(Last-In-First-Out, LIFO) 원칙을 따릅니다. 이것은 스택에 삽입한 가장 최근의 요소가 먼저 제거됨을 의미합니다. 스택은 다양한 컴퓨터 과학 및 소프트웨어 개발 분야에서 유용하게 활용됩니다. 예를 들어, 함수 호출 스택(call stack)은 함수 호출 및 반환 순서를 관리하는 데 사용됩니다. 재귀 함수 호출 시에도 스택을 사용하여 각 함수 호출을 추적하고 반환 순서를 관리합니다. 스택은 간단하면서 효율적인 자료 구조로, 데이터를 일시적으로 저장하고 추적하는 데 유용합니다. 많은 프로그래밍 언어 및 자료.. 2023. 11. 2.
파이썬 예외처리 1. 예외 예외(Exception)는 프로그램 실행 중 발생할 수 있는 예상치 못한 문제 또는 오류 상황을 의미합니다. 예외가 발생하면 프로그램은 중단되기 때문에 이를 적절하게 처리하여 중단을 방지하거나 오류에 대한 정보를 사용자에게 제공해야 합니다. print(10/3) print(5/0) # ZeroDivisionError: division by zero print(4/2) ValueError 잘못된 값을 함수나 연산에 제공할 때 발생합니다. 예) 숫자가 아닌 문자열을 int() 함수로 변환하려고 할 때 발생. TypeError 올바르지 않은 유형의 객체를 연산에 사용하려 할 때 발생합니다. 예) 문자열과 숫자를 함께 더하려고 할 때 발생. ZeroDivisionError 숫자를 0으로 나누려고 할 .. 2023. 9. 17.
파이썬 스페셜 메소드 1. 스페셜 메소드 파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다. 예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 __add__ 메서드가 호출됩니다. 클래스에서 사용했던 __init__메소드도 객체를 초기화해주는 스페셜 메소드 입니다. __str__ : 객체를 문자열로 표현하는 메서드. print() 함수나 str() 함수를 사용할 때 호출 book = Book('미친듯이 재밌는 파이썬') print(book) print(str(book)) # str메소드를 오버라이드 하기 class Book: def __init__(s.. 2023. 9. 17.
파일 입출력 라이브러리2 1.pickle pickle 모듈은 파이썬 객체 구조를 직렬화하고 역직렬화하는 프로세스를 제공합니다. 다른 말로하면, 파이썬 객체(리스트, 딕셔너리, 클래스 인스턴스 등)를 바이트 스트림으로 변환하고, 그 바이트 스트림을 다시 파이썬 객체로 복원할 수 있습니다. pickle 모듈은 Python 객체의 직렬화와 보존에 유용하며, 데이터를 효과적으로 저장하고 공유하는 데 사용됩니다. 그러나 보안과 버전 호환성 등의 주의사항을 염두에 두고 사용해야 합니다. import pickle data = ['apple', 'banana', 'orange'] # 직렬화, 바이너리로 저장을 하기때문에 'wb'사용 with open('list.pkl', 'wb') as f: pickle.dump(data, f) # 역직렬화 .. 2023. 9. 14.