[파이썬] 리스트의 중첩된 컴프리헨션

=========================================================

파이썬의 리스트 컴프리헨션은 강력한 기능으로, 리스트를 선언하고 그 안에 조건문과 반복문을 사용하여 요소를 초기화하는데 사용됩니다. 중첩된 컴프리헨션(Nested List Comprehension)은 이러한 리스트 컴프리헨션을 중첩하여 더 복잡한 데이터 구조를 생성하는 방법입니다.

중첩된 컴프리헨션은 기본적인 리스트 컴프리헨션과 유사한 구문을 가지고 있습니다. 다만, 내부의 컴프리헨션은 바깥쪽 컴프리헨션의 반복문에 의해 여러 번 실행되기 때문에, 데이터 구조의 중첩된 형태를 가질 수 있습니다.

예시 코드

# 2차원 리스트 생성
matrix = [[i for i in range(5)] for j in range(3)]
print(matrix)

위의 예시 코드는 3x5 크기의 2차원 리스트를 생성하는 중첩된 컴프리헨션입니다. 바깥쪽 컴프리헨션은 j 변수를 0부터 2까지 반복하면서 실행되고, 내부 컴프리헨션은 i 변수를 0부터 4까지 반복하면서 실행됩니다. 결과적으로, matrix 변수에는 다음과 같은 2차원 리스트가 저장됩니다:

[[0, 1, 2, 3, 4], 
 [0, 1, 2, 3, 4], 
 [0, 1, 2, 3, 4]]

중첩된 컴프리헨션은 다양한 방식으로 사용될 수 있습니다. 예를 들어, 중첩된 리스트를 생성하는데 조건문을 사용할 수도 있습니다:

# 2차원 리스트 생성 (조건문 사용)
matrix = [[i for i in range(5) if i % 2 == 0] for j in range(3)]
print(matrix)

위의 예시 코드는 i 변수가 짝수인 경우에만 요소를 포함하는 2차원 리스트를 생성합니다. 결과적으로, matrix 변수에는 다음과 같은 2차원 리스트가 저장됩니다:

[[0, 2, 4],
 [0, 2, 4],
 [0, 2, 4]]

결론

중첩된 컴프리헨션은 파이썬의 강력한 기능 중 하나이며, 복잡한 데이터 구조를 생성하는데 매우 유용합니다. 복잡한 리스트를 생성해야 하는 경우에는 중첩된 컴프리헨션을 적극적으로 활용하여 코드를 간결하고 가독성있게 작성할 수 있습니다.