728x90
반응형

리스트 컴프리헨션

: 리스트 컴프리헨션(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()다.

가장 쉽게 값을 출력하는 방법은 콤마(,)로 구분하는 것이다. 이 경우 한 칸 공백이 디폴트로 설정되어 있다.

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를 지정하면, 오류를 방지할 수 있다. 

728x90
반응형

+ Recent posts