본문 바로가기
카테고리 없음

[파이썬 심화] 리스트 컴프리헨션, 조건문과 중첩 for문, 실무 활용

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 8.

리스트 컴프리헨션이란 무엇인가?

리스트 컴프리헨션(List Comprehension)은 파이썬에서 짧고 간결하게 리스트를 생성하는 문법입니다.
기존의 for문을 이용한 리스트 생성 방식보다 훨씬 직관적이고 한 줄로 표현할 수 있다는 장점이 있습니다.

기본 구조는 아래와 같습니다:

[표현식 for 변수 in 반복가능한객체]

기본 예제: 0부터 4까지 숫자를 담은 리스트 만들기

numbers = [x for x in range(5)]
print(numbers)  # 출력: [0, 1, 2, 3, 4]

해석:

  • x for x in range(5)는 0부터 4까지 반복
  • [ ]로 감싸면 리스트로 만들어집니다

이 문법은 가독성이 높고, 작성도 간단하여 반복 작업을 효율적으로 처리할 수 있습니다.

조건문과 중첩 for문 활용하기

1. 조건문을 사용한 필터링

even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # [0, 2, 4, 6, 8]

해석:

  • if x % 2 == 0는 짝수만 선택
  • 조건을 만족하는 값만 리스트에 포함시킵니다

이와 같이 리스트 컴프리헨션은 단순 반복뿐 아니라 조건에 따른 필터링도 매우 쉽게 할 수 있습니다.

2. if-else 표현식 사용하기

labels = ["짝수" if x % 2 == 0 else "홀수" for x in range(5)]
print(labels)  # ['짝수', '홀수', '짝수', '홀수', '짝수']

해석:

  • "짝수" if 조건 else "홀수"는 조건에 따라 다른 값을 리스트에 담습니다
  • for x in range(5)는 0부터 4까지 반복

이 구조는 if 조건을 앞에 써서 값 자체를 분기하는 패턴입니다.

3. 중첩 for문으로 2차원 리스트 생성

pairs = [(x, y) for x in [1, 2] for y in [3, 4]]
print(pairs)  # [(1, 3), (1, 4), (2, 3), (2, 4)]

해석:

  • 가장 바깥쪽 for가 먼저 실행됩니다
  • 각 x에 대해 y가 반복되며 (x, y) 쌍을 생성합니다

이 방식은 곱집합(cartesian product)을 만들거나, 2중 반복 구조를 한 줄로 줄일 때 유용합니다.

실무에서의 활용 예시와 주의사항

1. 문자열에서 숫자만 추출해 리스트로 만들기

text = "a1b2c3"
digits = [int(ch) for ch in text if ch.isdigit()]
print(digits)  # [1, 2, 3]

해석:

  • for ch in text: 문자열을 문자 단위로 반복
  • if ch.isdigit(): 숫자인 문자만 필터링
  • int(ch)로 숫자 변환

문자열에서 숫자만 추출하는 작업을 한 줄로 간결하게 처리할 수 있습니다.

2. 리스트에서 중복 제거 후 정렬

data = [3, 1, 2, 3, 2, 1]
unique_sorted = sorted({x for x in data})
print(unique_sorted)  # [1, 2, 3]

해석:

  • {x for x in data}는 집합(set) 컴프리헨션 → 중복 제거
  • sorted()로 정렬

리스트 컴프리헨션은 []뿐 아니라 {}()로도 사용할 수 있어, 집합이나 제너레이터도 생성 가능합니다.

3. 2차원 리스트를 1차원으로 펼치기

matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened)  # [1, 2, 3, 4, 5, 6]

해석:

  • for row in matrix: 행 단위 반복
  • for num in row: 각 행의 요소 반복

2차원 리스트를 1차원으로 만드는 전개(flatten) 작업도 컴프리헨션으로 간결하게 처리할 수 있습니다.

주의사항: 너무 복잡하면 오히려 가독성이 떨어질 수 있음

컴프리헨션은 간결함이 장점이지만, 조건이 많거나 반복이 중첩되면 가독성이 오히려 나빠질 수 있습니다.
이럴 경우에는 for문으로 나누어 작성하는 것이 더 나을 수 있습니다. 리스트 컴프리헨션은 파이썬에서 가장 강력하고 자주 사용되는 문법 중 하나입니다. 단순한 리스트 생성부터, 조건 필터링, 데이터 변환, 2차원 배열 전개까지 다양한 상황에서 유용하게 활용됩니다. 처음에는 기본적인 구조부터 익히고, 점차 조건문, 중첩 루프, 실무 예제로 확장해보세요.
코드를 짧고 깔끔하게 유지하고 싶은 분들에게 리스트 컴프리헨션은 최고의 도구가 될 것입니다.