티스토리 뷰
컴프리헨션 문법으로 간결하고 효율적인 Python 코드 작성
파이썬(Python)은 높은 가독성과 간결한 문법 덕분에 많은 개발자들 사이에서 사랑받고 있는 프로그래밍 언어입니다. 이러한 특성은 특히 컴프리헨션(comprehension) 문법을 통해 더욱 두드러집니다. 본 글에서는 파이썬에서 컴프리헨션 문법을 사용하여 어떻게 간결하고 효율적인 코드를 작성할 수 있는지에 대해 살펴보겠습니다.
1. 컴프리헨션 문법이란?
컴프리헨션 문법은 리스트, 딕셔너리, 셋 등의 컬렉션을 쉽게 생성할 수 있도록 돕는 파이썬의 문법적 구조입니다. 이를 통해 반복문을 사용하지 않고도 데이터를 신속하게 생성하고 변형할 수 있습니다.
2. 리스트 컴프리헨션(List Comprehension)
리스트 컴프리헨션은 리스트를 효율적으로 생성하는 방법입니다. 기본적인 형태는 다음과 같습니다:
새로운리스트 = [식 for 항목 in 기존리스트 if 조건]
2.1 예제
기존의 리스트에서 모든 짝수만을 추출하여 새로운 리스트를 만들고자 할 때, 다음과 같이 사용할 수 있습니다.
기존_리스트 = [1, 2, 3, 4, 5, 6]
짝수리스트 = [x for x in 기존리스트 if x % 2 == 0]
위의 코드는 짝수_리스트에 [2, 4, 6]이라는 값을 저장하게 됩니다.
2.2 중첩 리스트 컴프리헨션
두 개의 리스트를 중첩하여 사용할 수도 있습니다. 다음은 1부터 3까지의 수와 1부터 2까지의 수를 곱하는 예시입니다.
곱셈_리스트 = [(x, y) for x in range(1, 4) for y in range(1, 3)]
이 코드는 [(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]라는 결과를 생성합니다.
3. 딕셔너리 컴프리헨션(Dictionary Comprehension)
딕셔너리 컴프리헨션은 딕셔너리를 간편하게 생성하는 방법입니다. 기본적인 형태는 리스트 컴프리헨션과 유사하지만, 키와 값을 지정합니다.
새로운딕셔너리 = {키: 값 for 항목 in 기존리스트 if 조건}
3.1 예제
기존의 리스트에서 각 숫자의 제곱을 키와 값으로 가지는 딕셔너리를 생성하는 예는 다음과 같습니다.
숫자_리스트 = [1, 2, 3, 4]
제곱딕셔너리 = {x: x**2 for x in 숫자리스트}
위 코드는 제곱_딕셔너리에 {1: 1, 2: 4, 3: 9, 4: 16}이라는 값을 저장합니다.
4. 셋 컴프리헨션(Set Comprehension)
셋 컴프리헨션은 집합(set)을 쉽게 생성하는 방법입니다. 문법은 다음과 같습니다.
새로운셋 = {식 for 항목 in 기존리스트 if 조건}
4.1 예제
중복을 제거한 짝수의 집합을 생성하는 예제는 다음과 같습니다.
숫자_리스트 = [1, 2, 3, 4, 2, 3, 4]
짝수셋 = {x for x in 숫자리스트 if x % 2 == 0}
위 코드는 짝수_셋에 {2, 4}라는 값을 저장합니다.
5. 컴프리헨션 문법의 장점
- 가독성 향상: 한 줄의 코드로 여러 작업을 수행할 수 있어 코드가 간결해진다.
- 성능 개선: 반복문을 사용하는 것보다 더 빠르게 데이터를 처리할 수 있다.
- 함수형 프로그래밍 지원: 함수와 결합하여 더욱 효율적인 코드 작성이 가능하다.
6. 주의할 점
- 가독성을 고려해야 한다: 지나치게 복잡한 컴프리헨션 문법은 오히려 가독성을 저해할 수 있다.
- 불필요한 계산을 피하라: 다양한 조건을 추가하는데 복잡한 계산이 들어가면 성능이 저하될 수 있다.
7. 실습 예제
다음은 컴프리헨션 문법을 적용해 문제를 해결하는 간단한 예제입니다.
7.1 예제 문제
1부터 100까지의 자연수 중, 3의 배수와 5의 배수를 구별하여 각각 두 리스트에 저장하고자 합니다.
7.2 해결 방법
숫자_리스트 = list(range(1, 101))
삼의배수 = [x for x in 숫자리스트 if x % 3 == 0]
오의배수 = [x for x in 숫자리스트 if x % 5 == 0]
이렇게 하면 삼의배수와 오의배수 리스트를 쉽게 만들 수 있습니다.
8. 결론
컴프리헨션 문법은 파이썬에서 강력하고 유용한 도구입니다. 이를 통해 코드의 가독성을 높이고, 코드 작성 속도를 개선할 수 있습니다. 다만, 컴프리헨션 문법의 사용은 적절한 상황에서 이루어져야 하며, 가독성을 해치지 않도록 주의해야 합니다. 초보자도 이 문법을 잘 익힌다면, 프로그래밍의 새로운 차원을 경험할 수 있을 것입니다.





