re.search()
re.match()
re.match().span()
re.match().group()
re.match().groups()
re.complie()
re.VERBOSE
string 앞에 0을 채우는 방법
rjust(width, [fillchar])
str = "123"
str.rjust(5, "0")
# 00123
"123".rjust(5, "a")
# aa123
zfill(width)
rjust()
와 달리 0으로만 채우는 것print('raw string을 사용하지 않고고\b 문자 출력하기')
→ raw string을 사용하지 않고 문자 출력하기
print(r'raw string을 사용하지 않고고\b 문자 출력하기')
→ raw string을 사용하지 않고고\b 문자 출력하기
map(function, iterable)
filter(function, list)
list(filter(lambda x: x<5, range(10)))
# [0,1,2,3,4]
reduce(function, sequence)
reduce(lambda x, y: x+y, [0,1,2,3,4])
# 10
# 0+1=1, 1+2=3, 3+3=6, 6+4=10
얕은 복사 & 깊은 복사 & 단순할당
a.copy() = a[:]
와 깊은 복사 : deepcopy()
는 메모리 위치가 다름a=b
는 메모리 위치가 같음메타문자
정규표현식 정리
https://hamait.tistory.com/342
List Comprehension
[반복실행문 for 반복변수 in 반복범위 if 조건 else 조건외]
Set Comprehension
{반복실행문 for 반복변수 in 반복범위 if 조건 else 조건외}
Dictionary Comprehension
{키:밸류 for 반복변수 in 반복범위 if 조건 else 조건외}
names = ['amy', 'jane', 'sophia', 'jay']
scores = [7, 9, 5, 10]
pas = []
for name, score in zip(names, scores):
if score > 8:
pas.append('PASS')
else:
pas.append('NO PASS')
# 컴프리헨션으로 표현
pas = ['PASS' if score > 8 else 'NO PASS' for name, score in zip(names, scores)]
scores = [7, 9, 5, 10]
ans = []
for score in scores:
arr = ['no pass', 'pass']
ans.append(arr[score > 8])
# 컴프리헨션으로 표현
pas = [['no pass','pass'][score > 8] for name, score in zip(names, scores)]
global 전역변수 : 변수가 생성되는 시점이 일반 전역변수와 다름
전역변수 문제점
https://codingcoding.tistory.com/361
raise Exception('안내문구')
assert 조건식, 조건식이 False인 경우 출력되는 메세지
의사코드 작성법
https://42kchoi.tistory.com/114
리스트명.sort()
: 리스트형의 메소드, 리스트 원본값 직접 수정
sorted(리스트명)
: 내장함수, 리스트 원본값은 그대로, 정렬값을 반환
- 연산자 1개(is not) : A는 B가 아니다.
foo = '' if foo is no None: # 한 번만 해석하면 됨 print('가독성 좋음')
- 연산자 2개(not, is) : A가 아닌것은 None이다.
if not foo is None: # 두 번 해석해야 함 print('가독성 좋지 않음')
클래스 설계
클래스의 인스턴스화
class MyFirstClass:
pass
a = MyFirstClass() # 인스턴스화(메모리할당됨)
print(a) # 주소값은 일반적인 정수값과 다르게 나옴
모듈
import 모듈명
from 모델명 import 변수/함수/클래스명
from 모듈명 import *
메소드 오버라이딩
enumerate
반복문 사용 시 몇 번째 반복문인지 확인 가능
인덱스 번호화 컬렉션의 원소를 튜플형태로 반환
파이썬의 자료형은 하나의 클래스
a.split()
은 문자열에서 사용 가능
객체지향
클래스
객체
클래스 구조
# 클래스 선언
class 클래스명():
실행코드
# self : 객체 생성한 후 자신을 참조하는데 이용
def 함수명(self, 여러가지 인자들):
실행코드
# 객체 선언
객체명 = 클래스명()
# 객체의 메소드 호출
객체명.메소드명()
# 클래스 선언
class Car():
pass
# 선언된 클래스로부터 객체 생성
my_car = Car()
# 객체에 속성값 설정
my_car.color = 'red'
# 객체에 속성값을 가져와서 출력
print('차 색상:', my_car.color)
# 클래스를 선언할때 초기화 함수 사용하면 객체를 생성하는 것과 동시에 속성값을 지정 할 수 있음
class Car():
def __init__(self, color):
self.color = color
my_car = Car('black')
print('차 색상:', my_car.color)
객체 초기화
__init__()
함수는 클래스의 인스턴스가 생성될 때 자동으로 실행되기 때문에 __init__()
함수에 초기화하려는 인자를 정의하면 객체를 생성할 때 속성을 최기화할 수 있음
클래스에서 사용되는 변수
클래스 변수는 클래스 내에 있지만 함수 밖에서 변수명=데이터
형식으로 정의한 변수로 클래스에서 생성한 모든 객체가 공통으로 사용가능, 클래스명.변수명
형식으로 접근 가능
인스턴스 변수는 클래스 내의 함수 안에서 self.변수명=데이터
형식으로 정의한 변수로서 클래스 내의 모든 함수에서 self.변수명
으로 접근 가능
# 클래스 선언
class Car():
pass
# 선언된 클래스로부터 객체 생성
my_car = Car()
# 객체에 속성값 설정
my_car.color = 'red'
# 객체에 속성값을 가져와서 출력
print('차 색상:', my_car.color)
# 클래스를 선언할때 초기화 함수 사용하면 객체를 생성하는 것과 동시에 속성값을 지정 할 수 있음
class Car():
def __init__(self, color):
self.color = color
my_car = Car('black')
print('차 색상:', my_car.color)
# 클래스명 Card를 통해 my_card1, my_card2, my_card3 만들고 3개의 카드 balance 가 모두 10000가 출력되게
# 클래스 선언
class Card():
def __init__(self):
self.balance = 10000
my_card_1 = Card()
my_card_2 = Card()
my_card_3 = Card()
# 객체 3개 선언
# 객체 속성값 가져와서 출력
print(my_card_1.balance)
print(my_card_2.balance)
print(my_card_3.balance)
# 총 발급된 카드 수가 3이 나오도록
class Card():
issued_card_count = 0
def __init__(self):
self.balance = 10000
Card.issued_card_count += 1
my_card_1 = Card()
my_card_2 = Card()
my_card_3 = Card()
print('총 발급된 카드 수:', Card.issued_card_count)
함수에서 어떤 변수를 호출하면
지역 영역
,전역 영역
,내장 영역
순서로 변수가 있는지 확인
arr[5]
O(n)
)만으로 성능 예측 X0(1)
- 상수시간(Constant): 문제를 해결하는 데 오직 한 단계만 처리(log n)
- 로그시간(Logarithmic) : 문제를 해결하는 데 필요한 단계들이 연산마다 특정요인에 의해 줄어듬0(n)
- 선형시간(Linear) : 문제를 해결하기 위한 단계의 수와 입력값 n이 1:1 관계를 가짐0(nlogn)
- 선형로그시간(Linearithmic) : 문제를 해결하기 위한 단계의 수가 N*(log2N) 번만큰의 수행시간을 가짐0(n^2)
- 2차시간(Quadratic) : 문제를 해결하기 위한 단계의 수는 입력값 n의 제곱0(c^n)
- 지수시간(Exponential) : 문제를 해결하기 위한 단계의 수는 주어진 상수값 c의 n제곱