WjExplor Story

파이썬 리스트 컴프리헨션 (List Comprehension) 본문

Python/Python : Code Study

파이썬 리스트 컴프리헨션 (List Comprehension)

더블유제이플로어 2025. 9. 25. 22:33

# 파이썬 리스트 컴프리헨션 (List Comprehension)

## 1. 리스트 컴프리헨션이란?
파이썬에서 리스트를 생성하는 간결하고 효율적인 방법입니다. 기존의 리스트(또는 다른 반복 가능한 객체)를 기반으로 새로운 리스트를 만들 때 사용합니다. 일반적인 for 루프와 append() 메서드를 사용하는 것보다 코드가 짧고 가독성이 좋으며, 때로는 성능도 더 좋습니다.

## 2. 기본 문법
[표현식 for 항목 in 반복가능객체]

## 3. 조건문이 포함된 문법
[표현식 for 항목 in 반복가능객체 if 조건]


4. 예제

예제 1: 간단한 변환 (각 숫자를 제곱하기)


numbers = [1, 2, 3, 4, 5]

# 일반적인 for 루프

squared_numbers_for = []
for num in numbers:
    squared_numbers_for.append(num**2)
print(f"for 루프: {squared_numbers_for}")

# 리스트 컴프리헨션

squared_numbers_comp = [num**2 for num in numbers]
print(f"리스트 컴프리헨션: {squared_numbers_comp}")


예제 2: 조건문을 이용한 필터링 (짝수만 선택하기)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 일반적인 for 루프

even_numbers_for = []
for num in numbers:
    if num % 2 == 0:
        even_numbers_for.append(num)
print(f"for 루프: {even_numbers_for}")

# 리스트 컴프리헨션

even_numbers_comp = [num for num in numbers if num % 2 == 0]
print(f"리스트 컴프리헨션: {even_numbers_comp}")

예제 2: 조건문을 이용한 필터링 (짝수만 선택하기) 예제 3: 변환과 필터링 동시에 (짝수의 제곱만 선택하기)

 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 일반적인 for 루프

squared_even_for = []
for num in numbers:
    if num % 2 == 0:
        squared_even_for.append(num**2)
print(f"for 루프: {squared_even_for}")


# 리스트 컴프리헨션

squared_even_comp = [num**2 for num in numbers if num % 2 == 0]
print(f"리스트 컴프리헨션: {squared_even_comp}")


### 예제 4: 중첩된 리스트 컴프리헨션 (구구단)
# 2단부터 9단까지의 구구단 결과 리스트

multiplication_table = [f"{i} x {j} = {i*j}" for i in range(2, 10) for j in range(1, 10)]
# print(multiplication_table) # 결과가 길어서 주석 처리
print(f"구구단 일부 예시: {multiplication_table[:5]} ...") # 앞부분만 출력

 

## 5. 언제 리스트 컴프리헨션을 사용하는 것이 좋을까?

- 기존 리스트를 기반으로 새로운 리스트를 만들 때
- 코드를 더 간결하고 읽기 쉽게 만들 때
- 간단한 변환이나 필터링 작업에 특히 유용합니다.
- 너무 복잡한 로직은 가독성을 해칠 수 있으므로, 그럴 때는 일반 for 루프를 사용하는 것이 좋습니다.