리스트 컴프리헨션
: 리스트 컴프리헨션(List Comprehension)이란 기존 리스트를 기반으로 새로운 리스트를 만들어내는 구문으로 파이썬의 대표적인 특징이다. 짧게 한 줄로 만들 수 있는 파이썬의 문법 이라고 생각하면 된다.
예를 들면, 다음과 같다.
#1
#[ ( 변수를 활용한 값 ) for ( 사용할 변수 이름 ) in ( 순회할 수 있는 값 )]
a = [n*2 for n in range(1,10+1) if n%2==1]
#2
a=[]
for n in range(1,10+1):
if n%2==1:
a.append(n*2)
1번과 2번의 결과값은 같다. 1부터 10까지 중 홀수를 구하는 식이다. 그러나 리스트 컴프리헨션을 쓰면 2번처럼 길게 풀어서 쓸 필요가 없어지는 것이다. 리스트 뿐만 아니라 딕셔너리 등이 가능하도록 추가됐다.
//나눗셈 연산자
파이썬에서는 / 하나만 사용하면 float형태로 구하기 때문에 원하는 몫을 구할 수 없다. //를 이용해서 몫을 구하면 된다.
만약 나머지를 구하려면 %연산자를 사용하면 된다.
그리고 몫과 나머지를 모두 구하려면 divmod()함수를 사용하면 된다.
divmod(5,3)
#(1,2)
코딩 테스트 문제 풀이 과정에서 디버깅을 할 때 가장 자주 쓰는 명령은 print()다.
가장 쉽게 값을 출력하는 방법은 콤마(,)로 구분하는 것이다. 이 경우 한 칸 공백이 디폴트로 설정되어 있다.
print('A1','B2')
#A1 B2
#sep 파라미터로 구분자를 콤마로 지정
print('A1','B2',sep=',')
#A1,B2
print()함수는 항상 줄바꿈을 하기 때문에 긴 루프의 값을 반복적으로 출력하면 디버깅하기가 어려워서 end파라미터를 공백으로 처리하여 줄바꿈을 하지 않도록 제한하자.
print('aa',end=' ')
print('bb')
#aa bb
리스트를 출력할 때는 join()으로 묶어서 처리한다.
a = ['A','B']
print(' ',join(a))
#A B
pass
코딩을 하다 보면 일단 코드의 전체 골격을 잡아 놓고 내부에서 처리할 내용은 차근차근 생각하며 만들겠다는 의도로 다음과 같이 코딩하는 경우가 있다.
class MyClass(Object):
def method_a(self):
def method_b(self):
print("Method B")
C=MyClass()
그러나 이 클래스는 실행이 되지 않는다.
이 문제는 method_a()가 아무런 처리를 하지 않았기 때문에 엉뚱하게 method_b()에서 오류가 발생한 것인데, 필요한 오류이긴 하나 한참 개발을 하던 중에 이런 오류에 맞닥뜨리게 되면 생각보다 처리하기가 번거롭다. pass는 이런 오류를 막는 역할을 한다. 다음과 같이 pass를 method_a()에 삽입해 간단히 처리할 수 있다.
class MyClass(Object):
def method_a(self):
pass
def method_b(self):
print("Method B")
C=MyClass()
파이썬에서 pass는 널 연산(Null Operation)으로 아무것도 하지 않는 기능이다. 이처럼 아무 역할을 하지 않는 pass를 지정하면, 오류를 방지할 수 있다.
'알고리즘 > 파이썬 알고리즘' 카테고리의 다른 글
옵셔널 파라미터 (optional parameter) (0) | 2021.05.20 |
---|---|
불 대수, 불린형, type 함수 (0) | 2021.05.20 |
포매팅 (0) | 2021.03.05 |
코멘트, 변수, 자료형 (0) | 2021.03.05 |
파이썬으로 코딩할 때 필요한 도구들 (0) | 2021.03.05 |