반응형

Python 12

정규표현식(3) [Python]

반복 패턴 검사하기 다음은 반복 단어를 찾는 검색 패턴이다. (\w+) \1 이 패턴은 w 문자(글자, 숫자 혹은 언더스코어) 중 1개 이상으로 나열된 단어와 일치한 후 빈칸 다음에 동일한 단어가 반복되는 것을 찾는다. 이 패턴은 다음 문장과는 일치하지 않는다. the dog the와 dog는 모두 단어 조건(\w+)에 부합되지만, 두 번째 단어가 첫 번째 단어와 동일하지 않다. 단어 the는 태그되었지만, 이 경우에는 반복되지 않았다. 반면 다음 문장은 이 패턴과 일치한다. 태그된 부분 문자열인 the가 반복되기 때문이다. the the 동일 패턴을 사용한 전체 코드를 살펴보자. 대상 문자열을 the the로 설정했다. import re s = 'The cow jumped over the the moo..

Python 2022.11.28

정규표현식(2) [Python]

import re pat = r'\d{1,3}(,\d{3})*(\.\d*)?' lst = re.findall(pat, '12,000 monkeys on 55.5 cats.') print(lst) # 출력 # [(',000', ''), ('', '.5')] 역추적, 탐욕적 수량자와 게으른 수량자 정규표현식 예시 import re pat1 = r'(\w|[@#$%^&*!]){8,}$'# 문자와 언더스코어, @#$%^&*! 중 하나를 허용하며, 8개의 문자를 요구한다. pat2 = r'.*\d'# 0개부터 여러 개의 문자와 일치한 후 하나의 숫자와 일치한다. pat3 = r'.*[a-zA-Z]'# 0개부터 여러 개의 문자와 일치(.*)한 후 대문자 혹은 소문자 글자와 일치한다. pat4 = r'.*[@#$%^..

Python 2022.11.17

정규표현식(1) [Python]

정규표현식 더하기 기호(+)는 최소 1개 이상의 문자를 의미한다. ex) ab+c abc abbc abbbc ... 곱하기 기호(*)는 더하기 기호와 비슷하지만 0개의 경우도 포함한다. ex) ab*c ac abc abbc abbbc ... 전화번호를 검증하는 함수를 함수를 작성해보자. 숫자를 의미하는 #을 사용하는 경우 다음과 같이 패턴을 작성할 수도 있다. ###-###-#### 정규표현식 문법으로는 다음과 같이 작성할 수 있다. \d\d\d-\d\d\d-\d\d\d\d 이 경우 역스리시(\)는 이스케이프 시퀀스로 동작하지만 d를 리터럴 문자로 만들지 않고, 특별한 의미를 부여한다. 부분표현식 \d는 하나의 숫자와 일치하는 것을 의미한다. 다음 부분표현식으로도 숫자를 표현할 수 있다. [0-9] 반면..

Python 2022.11.16

리스트 복사 vs 리스트 변수 복사, 얕은 복사 vs 깊은 복사

python은 변수에 int, str, list 등을 변수에 넣을 때 객체를 가르키는 주소를 저장하는 특징을 가지고 있다. 그래서 변수에 자료형을 선언하지 않아도 쉽게 저장할 수 있는 장점을 가지고 있으나 계산할 때는 속도가 느려지는 단점이 있다. 이번 글에는 list를 다룰때 값을 복사하려 했으나 별칭을 만들게 되는 경우를 정리한다. a_list = [2, 5, 10] b_list = a_list b_list.append(100) a_list.append(200) b_list.append(1) print(a_list)# [2, 5, 10, 100, 200, 1] 출력 위와 같이 리스트의 변수를 직접 변수로 받는 경우 새로운 list가 아닌 list의 별칭을 가지게 된다. 1차원 list를 간단하게 값 ..

Python 2022.11.15

set(세트)[Python]

딕셔너리는 key와 value로 구성되어 있지만 set은 key로만 구성되어 있으며 리스트와는 아래와 같이 다른 특징이 있다. 모든 항목은 유일하다. 모든 항목은 불변 타입이어야 한다. 항목이 정렬되지 않는다. 아래의 set_1과 set_2는 같다. set_1 = {1, 2, 3, 4, 5} set_2 = {5, 4, 3, 2, 1} set은 add와 remove 메서드를 사용하여 내용을 변경할 수 있다. set_1.add(6) set_2.remove(5) set을 생성할 때는 중괄호({})를 사용하여 생성할 수 없다. 중괄호를 사용하면 딕셔너리 생성과 같기 때문이다. 따라서 set()을 사용하여 생성해야 한다. A_set = set() set은 연산자를 사용하여 합집합과 교집합 같은 기능도 사용할 수 ..

Python 2022.11.11

[백준] Python [1149] RGB거리

문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1) 번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다..

[백준] Python [9461] 파도반 수열

문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오. 풀이1 P(1)부터 P(10)까지 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9로 구성되어있다. 그림에 보이는 대로 규칙을 찾아보면 마지막 숫자와 마지막에서 5번째 숫자가 더해지는 규칙이 있다. 그래서 앞에 1, 1..

Django 시작하기 [Pycharm]

1. Django 소개 Django는 Python을 사용하여 풀 스택(프런트, 백엔드) 웹 개발이 가능한 프레임워크이다. Python을 사용한 서버 개발은 Django, Flask, FastAPI 등이 있으며 장고가 가장 크기가 크고 문서 정리도 잘 되어있으며 커뮤니티가 크기에 Python으로 웹 개발을 시작하기에 가장 적합한 프레임 워크라고 생각하며 이후에 FastAPI, Flask 등을 공부하는 것이 순서에 맞을 것이라 생각된다. 2. Django 개발환경 구축 필자는 개인적으로 Anaconda를 사용했을 때의 안 좋은 기억이 있어 Anaconda에서 Python 개발하는 것을 지양하며 Editer는 Pycharm을 선호한다. 따라서 Pycharm 환경에서 Django를 사용할 것이며 Python 버..

Django 2022.09.08

같은 폴더에 들어있는 py파일 import하기

import os import sys from pathlib import Path FILE = Path(__file__).resolve() ROOT = FILE.parents[0] if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) ROOT = Path(os.path.relpath(ROOT, Path.cwd())) __file__ : 실행한 위치에서의 파일의 상대경로를 표시 ex) 경로\파일이름.py Path(__file__).resolve() : 현재 경로 + python 파일이름 FILE : 현재 경로 + python 파일이름 FILE.parents[0] : 현재 경로 sys.path.append : sys.path에 현재 폴더를 추가하여 import..

Python 2022.06.16
반응형