개발은 자바로 하고 코딩테스트는 파이썬으로 하는 것... 😏😏
쓰다보면 파이썬이 정말 합리적인 언어라는 생각이 든다!!
이번 글에서는 파이썬의 정신이 무엇인지, 파이썬만의 문법에 대해서 정리하겠다.
파이썬은 특히 "파이썬다움"을 특히 강조한다.🤔🤔
파이썬의 정신을 따라가면서 코드를 작성하면 합리적인 코드를 짤 수 있지 않을까!!
"파이썬의 정신"을 살려 공부해보자.
파이썬은 한줄씩 읽어가는 "인터프리터 방식"이면서, 멀티 패러다임을 지원하는 언어다.
파이썬으로는 객체지향 프로그래밍, 함수형 프로그래밍, 절차적 프로그래밍 모두 작성할 수 있다.
더 자세한 내용은 다른 글들을 참조해보자.
파이썬의 정신에 대한 글은 한번 읽어보는 것도 좋을 것 같다. 보러가기
개인적으로 생각하는 파이썬의 장점은 파이썬의 다양한 라이브러리를 활용해서 기초 지식없이도 높은 생산성과 원하는 결과물을 낼 수 있다는 것이다.
괄호를 사용하지 않고 들여쓰기로 구분한다.
강제는 아니지만 코딩테스트 플랫폼에서는 공백 4칸 들여쓰기를 적용하고 있다.
모두 소문자로 표기하고, 단어는 _
로 구분한다.
개인적으로 이렇게 해야하나..?? 라고 생각이 들기는 한다.
변수명: 타입
으로 타입을 지정할 수 있다.
이 경우에 다른 타입을 넣을 경우 오류를 반환한다.
컴프리헨션이란, {}
,[]
의 내부에 반복문을 사용해 리스트나 딕셔너리, set자료형을 만드는 것이다.
a_list = [x for x in range(10)]
for 문에서 주입되는 변수를 앞에 써 리스트의 요소로 추가하는 것이다.
a_list = [x for x in range(1, 10+1) if x % 2 == 0]
컴프리 헨션은 if
문을 지원한다.
for문 뒤에 위치하며, for문의 변수를 if문에서 검사하고, 통과한 값을 요소로 추가하는 방식이다.
if문과 for문을 여러개를 사용할 수 있지만 가독성이 낮아저 지양하는게 좋다.
파이썬의 제너레이터는 이터러블을 생성하는 객체이다.
yield
키워드를 사용하면 제네레이터 함수가 된다.
def get_natural_number():
n = 0
while True:
n+=1
yield n
g = get_natural_number()
for _ in range(100):
print(next(g))
next
: iterable(반복 가능한 객체)에서 값을 차례로 가져온다. range()
함수sum()
함수squares = (x**2 for x in range(1, 1000001))
range()
를 리용해 제너레이터를 만드는 것이 훨씬 메모리가 절약된다.a = [n for n in range(10000)]
b = range(10000)
// b가 메모리 사용량이 더 적다. (type이 range지만 인덱스로 접근가능)
/
: float 값을 제공한다.
//
: 정수형인 몫을 제공한다.
파이썬에서 값을 출력하는 방법은 다양하다.
문자열을 만들어서 출력해야하는 경우 f'{}'
를, 연결자나 마지막 문자를 바꿔야할 경우 sep=
나 end=
를 기억하자.
print(a, b) #1 2
print(a, b, sep=", ") #1 2
print(a, b,end="!!\n") #1 2
print('{0}은 {1}보다 작다.'.format(a,b)) #1은 2보다 작다.
print('{1}은 {0}보다 크다.'.format(a,b)) #2은 1보다 크다.
print(f'a:{a}는 b:{b}보다 작다.') #a:1는 b:2보다 작다.
print(f'b:{b}는 a:{a}보다 크다.') #b:2는 a:1보다 크다.
range()
함수 사용이 반복문보다 메모리를 절약하고 시간을 단축시킨다.sum()
함수 사용이 반복문보다 메모리를 절약하고 시간을 단축시킨다enumerate
는 파이썬다운 방법이다.진짜 아주 짧게 파이썬에 대해서 알아봤다.
range()나 sum()이 간단하다고는 생각했지만 기능적으로도 우수한 건 처음 알았다!!
기억하고 가자!!