Python 266

[Python] 불변 객체 (Immutable)

객체 종류 Python에서는 객체를 두 가지 종류로 구분할 수 있다. Mutable : 가변객체. 상태를 변경할 수 있는 객체 Immutable : 불변객체. 상태를 변경할 수 없는 객체 여기서 상태란 값을 의미한다. 즉, 어떤 변수에 값을 할당하고 갱신할 때 저장된 값의 데이터형의 종류에 따라 동작방식이 다르다. 이해해 둘 필요가 있어 보여 이 글에서는 불변 객체에 대해 정리한다. 불변(Immutable) 객체 특징 1. 변수에 할당한 값을 변경하면 변수가 참조하는 메모리 주소가 달라진다. a = "python2" print(f'a={a}, id(a)={id(a)}') a = "python3" print(f'a={a}, id(a)={id(a)}') 위의 코드는 다음과 같은 순서로 동작한다. 문자열 객체..

Python 2023.12.14

[Python] dotenv - .env 파일 읽기

개요 Airflow 프로세스를 동작시킬 때 KEY=VALUE 형태로 정의된 환경 변수 파일에 적절한 값을 저장/로드하여 사용하는데, 해당 값을 Python으로도 사용하려고 한다. 확인해보니 .env 파일로부터 키-값 형식의 값을 읽어 환경 변수로 설정할 때는 python-dotenv라는 패키지를 사용하는 것 같다. 패키지 사용 방법을 정리해둔다. python-dotenv 설치 python-dotenv는 기본 내장 패키지가 아니기 때문에 별도 설치가 필요하다. pip install python-dotenv 모듈 임포트 사용 사례에 따라서 다음과 같이 import 하여 사용한다. from dotenv import load_dotenv # 환경 변수로 설정 from dotenv import dotenv_val..

Python 2023.11.23

[Python] PyMySQL - DELETE 하기

개요 2022.11.05 - [Python] PyMySQL - MySQL SELECT 하기 2023.11.17 - [Python] PyMySQL - INSERT 하기 위 두 개 글에서 Python을 이용해 MySQL에 저장된 데이터를 조회하고, 데이터를 테이블에 저장했다. 이번 글에서는 테이블에 저장한 데이터를 삭제해보려고 한다. 예시 테이블 예시로 위와 같은 users 테이블이 있다고 하자. DDL 더보기 CREATE TABLE users ( NAME VARCHAR(10), EMAIL VARCHAR(50), PRIMARY KEY (NAME) ); INSERT INTO users(NAME, EMAIL) VALUES ('daum', 'test@daum.net'), ('june', 'june@tistory...

Python 2023.11.21

[Python] PyMySQL - INSERT 하기

개요 2022.11.05 - [Python] PyMySQL - MySQL SELECT 하기에서 python으로 MySQL에 저장된 데이터를 조회해 봤는데, 이번 글에서는 INSERT를 수행해보려고 한다. cursor.execute PyMySQL로 일회성 SQL을 실행할 때는 cursor 클래스에 정의된 execute 함수를 사용한다. 예시로 다음과 같은 users 테이블이 있다고 하자. DDL 더보기 CREATE TABLE users ( NAME VARCHAR(10), EMAIL VARCHAR(50), PRIMARY KEY (NAME) ); INSERT INTO users(NAME, EMAIL) VALUES ('june', 'june@tistory.com'), ('passwd', 'passwd@tisto..

Python 2023.11.17

[Python] Counter - 중복집합 연산

개요 2023.10.10 - [Python] Counter - 데이터 수 확인에서 Counter 클래스에 대해 알아보았고, 2023.10.25 - [Python] 다중집합 교집합/합집합 구현에서 Python으로 중복집합의 교집합, 합집합 연산을 구현해 봤다. 근데 공식 문서를 보니 Counter 클래스가 다른 프로그래밍 언어의 multiset과 유사하다고 한다. 생각해 보면 중복집합 \(\{a, a, a, b, b, c, c, c, c\}\)는 \((\{a, b, c\}, (a \mapsto 3, b \mapsto 2, c \mapsto 4))\)로도 표현할 수 있는데, 이는 원소를 Key로 하고 중복도를 Value로 하는 딕셔너리로 생각할 수 있다. 그래서인지 Counter 클래스는 중복집합을 생성하기..

Python 2023.10.26

[Python] 다중집합 교집합/합집합 구현

다중집합 수학에서 집합(set)은 어떤 조건을 만족시키는 서로 다른 대상의 모임으로, 집합 내 원소에 대해 중복을 허용하지 않는다. 반면 multiset(중복집합, 다중집합)은 각 원소를 어떤 기수만큼 중복하는 것을 허용하는 집합의 일반적인 개념이다. 원소가 중복된 횟수를 중복도(multiplicity)라고 하는데, 일반적인 집합은 각 원소의 중복도가 1인 중복집합이라고 생각할 수도 있다. 이 글에서는 Python으로 중복집합의 교집합과 합집합 연산을 구현한 코드를 정리한다. 프로그래머스 - [1차] 뉴스 클러스터링 문제 맞다……. 교집합 아래와 같은 중복집합 A, B가 있다고 할 때, a = [1, 2, 2, 3, 4, 5] b = [1, 1, 2, 3, 4, 6] 두 중복집합 A, B의 교집합은 [1..

Python 2023.10.25

[Python] PriorityQueue 사용

개요 2023.10.20 - [자료구조] 우선순위 큐 (Priority Queue)에서 우선순위 큐에 대해 살펴보았는데, 이 글에서는 Python에서 우선순위 큐를 제공하는 Priority Queue 클래스를 사용하는 방법을 정리해두려고 한다. Python queue.PriorityQueue는 내부적으로 heapq로 구현되어 있다. 클래스 임포트 PriorityQueue 클래스를 사용할 때는 아래와 같이 임포트 하여 사용할 수 있다. queue는 내장 모듈이므로 추가적인 라이브러리 설치는 필요하지 않다. from queue import PriorityQueue 선언 생성자를 사용하여 PriorityQueue를 선언한다. 큐의 최대 크기가 정해져 있다면 maxsize로 크기를 전달할 수있다. 큐의 크기에 ..

Python 2023.10.23

[Python] deque 사용

개요 2021.10.07 - [자료 구조] 회문 찾기 / 큐 & 스택에서 collections.deque을 이용해 Python으로 큐를 사용하는 방법을 간단히 적어두었다. 실제로 deque는 큐를 구현한 것 아니라 양방향 큐를 구현한 것으로, 종종 deque를 단방향으로 사용하여 큐로 취급하는 것 같다. 이 글에서는 deque 클래스를 사용하는 방법을 간단히 적어둔다. deque에 대한 개념은 2023.10.18 - [자료구조] deque - 양방향 큐에 정리해 두었다. 클래스 임포트 deque 클래스를 사용할 때는 아래와 같이 임포트 하여 사용할 수 있다. collections는 내장 모듈이므로 추가적인 라이브러리 설치는 필요하지 않다. from collections import deque 선언 생성자..

Python 2023.10.19

[Python] Asterisk(*)

AsteriskPython 코드를 찾아보면 Asterisk(*)를 사용하는 모습을 많이 볼 수 있는데, Python에서 Asterisk는 곱셉 연산 외의 여러 기능을 제공한다.이 글에서는 Asterisk로 어떤 연산을 할 수 있는지 정리해 둔다.    곱셉, 거듭제곱Python에서 Asterisk는 곱셈 연산을 할 때 사용할 수 있다. 또 Asterisk를 연달아 사용해(**) 거듭제곱 연산을 할 수 있기도 하다.2 * 32 ** 3  interable 데이터 반복리스트와 같은 반복 가능한 데이터를 반복적으로 확장하는 용도로 사용할 수 있다.print([i for i in range(3)] * 2)print((1, 2, 3) * 2)  interable 데이터 unpacking함수 호출 시 매개변수로 반..

Python 2023.10.17

[Python] 두 리스트를 딕셔너리로 만들기

개요 코딩 테스트 문제를 풀다 보면 입력 데이터로 서로 관계가 있는 두 개의 리스트가 주어질 때가 많은데, 이런 케이스는 딕셔너리로 데이터를 묶어서 처리하곤 한다. 이 글에서는 두 리스트 내 원소를 키-값으로 하는 딕셔너리를 만드는 방법을 간단히 정리한다. 예시로, 사고자 하는 물건과 그 수량을 각각 want, number라는 리스트에 저장해 두었다고 하자. want = ["banana", "apple", "rice", "pork", "pot"] number = [3, 2, 2, 2, 1] 이 두 리스트를 이용해 물건을 키로 하고 그 수를 값으로 하는 딕셔너리를 만들고자 한다. 딕셔너리 컴프리헨션 딕셔너리 컴프리헨션을 이용하면 아래와 같은 방식으로 만들 수 있다. want = ["banana", "app..

Python 2023.10.13