본문 바로가기

파이썬

(10)
[Python] 파이썬 PEP 701: F-String 개선(Python 3.12버전 코드 예시) 파이썬에서 F-스트링(F-strings)은 코드의 가독성을 높이고 문자열 포매팅을 간편하게 만들어 주는 강력한 기능입니다. PEP 701은 이 F-스트링 기능의 개선에 관한 제안서입니다. F-스트링의 개선점 성능 향상: PEP 701은 F-스트링의 성능을 향상시키는 방법을 제안합니다. 이는 특히 대규모 데이터를 다룰 때 유용합니다. 추가 기능: 새로운 포매팅 옵션과 기능을 도입하여 더 다양한 사용 사례를 지원합니다. 예시 코드 # 기본 F-스트링 사용 예 name = "홍길동" age = 30 print(f"이름: {name}, 나이: {age}") # PEP 701에 따른 개선된 F-스트링 사용 예 # 예를 들어, 인라인 계산이나 더 향상된 형식 지정 기능을 포함할 수 있음 print(f"{name=}..
[Python] 파이썬 PEP 695: 타입 파라미터(TypeVar) 문법과 타입 문(예시 코드) 파이썬의 타입 시스템은 지속적으로 발전하고 있으며, PEP 695는 이러한 발전의 일환으로 제안되었습니다. 이 PEP는 특히 타입 파라미터 문법과 타입 문에 초점을 맞추고 있습니다. 주요 내용 타입 파라미터 문법: 이 문법은 제네릭 타입을 더 명확하고 간결하게 표현할 수 있게 해줍니다. 이는 타입 힌트의 가독성을 향상시키고, 복잡한 타입 구조를 더 쉽게 이해할 수 있게 합니다. 타입 문: 타입 문은 타입 힌트를 코드 내에서 더 명시적으로 표현할 수 있는 방법을 제공합니다. 이를 통해 개발자는 코드의 의도를 더 명확하게 전달할 수 있습니다. 예시 코드 # 타입 파라미터 문법 예시 T = TypeVar('T') class Stack(Generic[T]): def push(self, item: T) -> No..
[Python] 판다스(Pandas)에서 DataFrame 행 반복 처리하기 - iterrows 판다스(Pandas)는 파이썬에서 데이터 분석을 위해 널리 사용되는 라이브러리입니다. 이 글에서는 판다스의 DataFrame에서 행을 반복(iterate) 처리하는 방법에 대해 알아보겠습니다. DataFrame 행 반복의 기본: iterrows() 판다스에서 DataFrame의 각 행을 반복하는 기본적인 방법은 iterrows() 함수를 사용하는 것입니다. 이 함수는 DataFrame의 행을 (인덱스, 시리즈) 쌍으로 반복합니다. 예시 코드 import pandas as pd # 예제 DataFrame 생성 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) # iterrows를 사용하여 행 반복 for index, row in df.iterrows(): prin..
[Python] Python 3.10에서 새롭게 도입된 패턴 매칭 기능 (match-case) 파이썬 3.10 버전에서 소개된 중요한 새로운 기능 중 하나는 패턴 매칭입니다. 이 기능은 다양한 데이터 타입과 구조를 더 직관적이고 유연하게 처리할 수 있도록 해줍니다. 패턴 매칭이란? 패턴 매칭은 주어진 데이터 구조를 특정 패턴과 비교하여, 해당 패턴에 부합하는지 여부를 확인하는 프로세스입니다. 이 기능은 많은 함수형 프로그래밍 언어에서 일반적으로 사용되며, 파이썬 3.10에서는 match 문과 case 문을 통해 구현됩니다. 기본 구조 match 대상_변수: case 패턴1: # 패턴1과 일치할 때 실행되는 코드 case 패턴2: # 패턴2와 일치할 때 실행되는 코드 ... 사용 예시 아래 예시는 파이썬 3.10의 패턴 매칭 기능을 보여줍니다: def greet(person): match perso..
[Algorithm] 삼성 SW 역량 테스트(코딩 테스트) 자주 나오는 알고리즘 유형 정리(유형별 Python Code 및 문제) 본 포스팅에서 삼성 SW 역량 테스트를 준비하며 자주 출제되는 문제를 알고리즘 별로 정리하고 Python 예시 코드를 살펴보겠습니다. 삼성 SW 역량 테스트 기출 문제는 Baekjoon Online Judge 문제를 기준으로 하였습니다. 또한 각 알고리즘을 푸는 방식은 여러 방법이 존재할 수 있습니다. https://www.acmicpc.net/workbook/view/1152 문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon) www.acmicpc.net 1. 기본 알고리즘 삼성 기출 문제는 보통 2차원 배열을 이용한 구현, 시뮬레이션 문제를 주로 다룹니다. 비교적 최근 문제인 컨베이어 벨트 위의 로봇(https://www.acmicpc.net/problem/20055) 문제는 1차원 배열로..
[Python] 어노테이션(Annotation) vs docstring 이전 포스팅에서 docstring과 어노테이션에 대해 다루어 봤는데, 이번 포스팅에서는 이 둘의 관계와 차이에 대하여 알아보겠습니다. 2022.03.10 - [About/Python] - [Python] Docstring에 대하여 2022.03.17 - [About/Python] - [Python] 어노테이션(Annotation)에 대하여 어노테이션은 docstring을 대체하는 것일까? 어노테이션이 소개되기 오래전부터 함수의 파라미터 또는 속성의 타입을 문서화할 때 docstring을 사용했었기 때문에 docstring 대신 어노테이션을 사용해야 하는 것인지에 의문을 가질 수 있습니다. 대답은 "예" 입니다. docstring과 어노테이션은 서로 보완적인 개념이기 때문입니다. docstring에 포함..
[Python] 어노테이션(Annotation)에 대하여 어노테이션(Annotation) PEP-3107에서는 어노테이션을 소개합니다. https://peps.python.org/pep-3107/ PEP 3107 – Function Annotations | peps.python.org PEP 3107 – Function Annotations PEP 3107 Title Function Annotations Author Collin Winter , Tony Lownds Status Final Type Standards Track Created 02-Dec-2006 Python-Version 3.0 Post-History Contents This PEP introduces a syntax for adding arbitrary metada peps.python.org..
[백준 8972] 미친 아두이노(Python 풀이) https://www.acmicpc.net/problem/8972 8972번: 미친 아두이노 요즘 종수는 아두이노를 이용해 "Robots"이라는 게임을 만들었다. 종수는 아두이노 한대를 조정하며, 미친 아두이노를 피해다녀야 한다. 미친 아두이노는 종수의 아두이노를 향해 점점 다가온다. www.acmicpc.net 풀이 문제 조건만 잘 확인해서 구현하면 쉽게 풀리는 문제였습니다. 입력 1 2 3 R, C = map(int, input().split(' ')) board = [list(map(str, input())) for _ in range(R)] moves = list(map(int, input())) cs 연속된 문자열 형태로 입력되기 때문에 위와 같이 map을 이용하여 list 형태로 입력받습니다...
[백준 20058] 마법사 상어와 파이어스톰(Python 풀이) https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 풀이 이번 문제는 배열의 회전, BFS를 이용하여 풀 수 있습니다. 풀이는 다음과 같습니다. 우선 다음과 같이 입력을 받습니다. N, Q = map(int, input().split(' ')) # N, Q len_board = 2 ** N # 얼음을 저장할 보드의 길이 board = [list(map(int, input().split(' '))) for _ in range(le..
[Python] Flask 변수와 컨버터 변수와 컨버터 Flask의 라우팅 시스템은 '변수' 기능을 제공한다. 구문을 이용하여 변수를 사용할 수 있다. 이 표기법은 거의 표준처럼 사용되고 있으며, 이렇게하여 엔드포인트를 동적으로 표현할 수 있다. 예를 들어 고유한 사용자 ID를 N으로 표현한다고 할 때 ./person/N에 대한 요청을 처리하는 함수를 만들려면 route에 /person/를 인수로 넘겨주면 된다. Flask가 데코레이트 함수를 호출할 때 URL에서 위치의 값을 person_id 인수로 변환해준다. 예시 코드는 다음과 같다. from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/person/') def person(person_id): resp = json..