더북(TheBook)

이 외에도 조건문을 추가할 수 있어 원하는 값만 추출할 수 있습니다.

바로 앞의 코드에서 짝수만 뽑고 싶다면 간단하게 뒤에 if 문을 추가하면 됩니다.

[i for i in range(11) if i % 2 == 0]

또한, if 문 뒤에 다시 if 문을 중첩할 수도 있습니다. 이때 if 문은 and로 취급합니다(직접적으로 and를 넣으면 오류가 발생합니다. 마찬가지로 or도 사용할 수 없습니다). 이 코드에서 짝수와 5의 배수를 동시에 만족하는 숫자만 필요하다고 하면 다음 코드처럼 작성하면 됩니다.

[i for i in range(11) if i % 2 == 0 if i % 5 == 0]

즉, 선언 → 할당 → 재구성 과정을 단 한 줄에 모두 끝낼 수 있으며, 시간은 O(n)으로 여러 줄로 바꿔 써도 차이가 발생하지 않아서 간편하게 데이터를 준비할 수 있습니다.

잠깐만요

리스트 컴프리헨션은 지금 소개한 기능보다 더 많은 일을 할 수 있습니다. 2차원 배열을 1차원 배열로 압축(flatten)하거나, 데이터의 구조를 직접적으로 변형하지 않고도 원하는 연산을 진행할 수 있죠. 그러나 이런 특징은 여러분이 한 줄에 모든 것이 들어간 이상한 코드를 많이 보게 되는 주요 원인이 되기도 합니다.

사용하기 간편하고 많은 것을 할 수 있다고 해도, 너무 심하게 줄이는 것은 좋지 않습니다. 앞서 말했지만 이해하지 못하는 코드는 오히려 큰 문제를 일으키는 도화선이 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.