본문 바로가기

파이썬

파이썬 리스트 컴프리헨션

파이썬 리스트 컴프리헨션: 간결하고 효율적인 방법으로 리스트 생성하기

리스트 컴프리헨션은 파이썬의 강력한 기능 중 하나로, 반복문과 조건문을 사용하여 간결하게 리스트를 생성할 수 있는 방법입니다. 이 글에서는 리스트 컴프리헨션의 기본 개념과 예제를 통해 어떻게 사용하는지 살펴봅니다.

리스트 컴프리헨션의 기본 구조

리스트 컴프리헨션의 기본 구조는 다음과 같습니다.

[expression for item in iterable if condition]

여기서 expression은 각 항목에 적용되는 표현식이고, item은 반복 가능한 객체(iterable)의 각 항목을 나타냅니다. condition은 선택 사항으로, 표현식이 적용될 항목을 필터링하는 데 사용됩니다.

리스트 컴프리헨션 예제

예를 들어, 0부터 9까지의 제곱값을 갖는 리스트를 만들려면 다음과 같이 리스트 컴프리헨션을 사용할 수 있습니다.

squares = [x ** 2 for x in range(10)]
print(squares)

결과:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

조건문을 사용한 리스트 컴프리헨션

리스트 컴프리헨션에 조건문을 추가하여 특정 조건에 맞는 항목만 포함시킬 수 있습니다. 예를 들어, 짝수 제곱값만 포함하는 리스트를 만들려면 다음과 같이 작성할 수 있습니다.

even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)

결과:

[0, 4, 16, 36, 64]

리스트 컴프리헨션의 장점

리스트 컴프리헨션은 일반적인 for 루프보다 간결하고 가독성이 좋으며, 때로는 더 빠른 실행 속도를 제공합니다. 그러나 복잡한 표현식이나 여러 레벨의 중첩이 필요한 경우 가독성이 떨어질 수 있으므로 적절한 사용이 중요합니다.

리스트 컴프리헨션 중첩

리스트 컴프리헨션은 중첩하여 사용할 수 있습니다. 예를 들어, 2차원 행렬을 생성하는 경우 다음과 같이 중첩된 리스트 컴프리헨션을 사용할 수 있습니다.

matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)

결과:

[[1, 2, 3], [2, 4, 6], [3, 6, 9]]

위의 예제에서 첫 번째 리스트 컴프리헨션은 각 행을 생성하고, 두 번째 리스트 컴프리헨션은 각 열의 값을 계산합니다.

결론

리스트 컴프리헨션은 파이썬에서 간결하고 효율적으로 리스트를 생성하는 방법입니다. 반복문과 조건문을 사용하여 원하는 결과를 얻을 수 있으며, 중첩된 구조를 사용하여 더 복잡한 자료 구조를 생성할 수도 있습니다. 그러나 가독성을 유지하기 위해 적절한 사용이 필요합니다.

자주 묻는 질문

    1. 리스트 컴프리헨션의 성능은 일반 for 루프보다 좋은가요?
      리스트 컴프리헨션은 일반적으로 for 루프보다 빠른 실행 속도를 제공합니다. 그러나 실제 성능은 사용하는 표현식과 조건, 파이썬 인터프리터에 따라 다를 수 있습니다.
    2. 리스트 컴프리헨션 외에도 다른 컴프리헨션 형태가 있나요?
      네, 파이썬에는 딕셔너리 컴프리헨션과 세트 컴프리헨션도 있습니다. 이들도 리스트 컴프리헨션과 유사한 방식으로 작동합니다.
    3. 리스트 컴프리헨션에 여러 조건을 사용할 수 있나요?
      네, 리스트 컴프리헨션에 여러 조건을 추가하여 더 복잡한 필터링이 가능합니다. 조건들은 if 절에 and 또는 or로 연결하여 사용할 수 있습니다.
    4. 리스트 컴프리헨션 대신 사용 할 수 있는 다른 방법은 무엇인가요?
      리스트 컴프리헨션 외에도 리스트를 생성하는 데 사용할 수 있는 다른 방법들이 있습니다. 일반적인 for 루프와 조건문을 사용하거나, 람다 함수와 map() 함수를 사용하여 리스트를 생성할 수 있습니다. 이들 방법 중 어느 것을 사용할지는 개발자의 취향과 상황에 따라 달라집니다.
    5. 리스트 컴프리헨션에서 else 문을 사용할 수 있나요?
      네, 리스트 컴프리헨션에서 if-else 문을 사용하여 다양한 조건에 따른 값을 생성할 수 있습니다. 예를 들어, 0부터 9까지의 수 중 짝수는 제곱값을, 홀수는 세제곱값을 갖는 리스트를 만들려면 다음과 같이 작성할 수 있습니다:
mixed_powers = [x ** 2 if x % 2 == 0 else x ** 3 for x in range(10)]
print(mixed_powers)

결과:

[0, 1, 4, 27, 16, 125, 36, 343, 64, 729]

'파이썬' 카테고리의 다른 글

파이썬 람다 함수  (0) 2023.04.12
파이썬 함수  (0) 2023.04.12
파이썬 반복문  (0) 2023.04.11
파이썬 조건문  (0) 2023.04.11
파이썬 딕셔너리  (0) 2023.04.11