파이썬 List를 편하게 가지고 노는 방법 (List Comprehensions)

2019. 8. 13. 11:05Programming Tutorial/Python

List compreshension을 이용하게되면 List를 편하고 간편하게 다룰수 있습니다.

 

여기서 편하고 간편하게라는 의미는 역시 적은 타이핑을 의미하겠지요.

 

익숙해지면 생산성이 더욱 올라갈 겁니다.

 

예를 몇가지 볼까요?

 

capitalized_coffees = []
for coffee in coffees:
    capitalized_coffees.append(coffee.title())

아유... 길다 그죠? 타이핑도 많이 쳤고, For 반복문도 사용하면서 줄도 많아 졌습니다.

 

이제 편하고 간단하게 해봅시다.

 

capitalized_coffees = [coffee.title() for coffee in coffees]

위와 같이 아주 간단해졌네요.

 

이렇게 List Comprehension은 for 반복문을 통해서 list를 만드는 행위를 한방에 / 한줄에 처리할수 있도록 해줍니다.

간단한 한줄이다보니 가독성도 훨씬 좋으네요.

 

for 반복문은 위와같이 하면 되겠는데...

 

그럼 정말 자주쓰는 if와 함께 사용하는 예시도 봐야겠지요?

 

squares = [x**2 for x in range(9) if x % 2 == 0]

위에 어떤 조건을 더했나요? x mod 2가 0일때. 음 even 즉 x가 짝수 일때만 왼쪽 반복문과 함께 list를 만들어라로

 

되어있네요.

 

0, 2, 4, 8 을 제곱했으니 출력은 0, 4, 16, 64 가 되겠습니다.

 

쉽지요?

 

하지만 여기서 if 가 등장했으니 절친인 else를 같이 활용한 예시도 보고 가야겠습니다.

 

일단 위의 예를 반영해서 간단하게 아래와 같이 쓴다면??

 

squares = [x**2 for x in range(9) if x % 2 == 0 else x + 3]

 

Syntex Error가 발생합니다.

 

이럴때는 아래와 같이 해야합니다. for 앞에다가 if else set를 같이 넣어주는 거죠.

 

squares = [x**2 if x % 2 == 0 else x + 3 for x in range(9)]