파이썬 컴프리헨션(Comprehension)

Minsang Yu·2023년 6월 6일

컴프리헨션( Comprehension)

컴프리헨션(Comprehension)은 파이썬에서 컬렉션(리스트, 집합, 딕셔너리등)을 생성하기 위한 간결하고 표현적인 방법이다.

컴프리헨션은 컴프리헨션은 리스트 컴프리헨션(List Comprehension), 집합 컴프리헨션(Set Comprehension 또는 중괄호 컴프리헨션), 딕셔너리 컴프리헨션(Dictionary Comprehension)으로 나뉩니다.

컴프리헨션은 반복문과 조건문을 결합하여 컬렉션을 생성하는 한 줄짜리 표현식으로 작성됩니다. 이는 코드를 간결하게 만들어주고, 루프를 사용하여 컬렉션을 생성하는 번거로움을 줄여줍니다.

컴프리헨션의 일반적인 구문은 다음과 같습니다.

    1. 리스트 컴프리헨션 (List Comprehension):
# 리스트 컴프리헨션
[표현식 for 요소 in 반복 가능한 객체 if 조건문]
  1. 집합 컴프리헨션 (Set Comprehension 또는 중괄호 컴프리헨션):
{표현식 for 요소 in 반복 가능한 객체 if 조건문}
  1. 딕셔너리 컴프리헨션 (Dictionary Comprehension):
{키_표현식: 값_표현식 for 요소 in 반복 가능한 객체 if 조건문}

위의 구문에서:

  • 표현식: 각 요소에 대한 계산이나 변환을 수행하는 표현식입니다.
  • 요소: 반복 가능한 객체에서 가져온 각 요소입니다.
  • 반복 가능한 객체: 리스트, 튜플, 집합, 문자열 등과 같은 반복 가능한 객체입니다.
  • 조건문 (선택적): 표현식이 적용되는 조건입니다.

컴프리헨션은 반복문과 조건문을 함께 사용하여 데이터를 처리하고 새로운 컬렉션을 생성하는데 유용합니다. 이를 통해 코드를 더 간결하고 가독성이 높은 형태로 작성할 수 있습니다.

1. 리스트 컴프리헨션 예제

  • 1부터 10까지의 제곱 값을 갖는 리스트 생성
    # 1부터 10까지의 제곱 값을 갖는 리스트 생성
    squares = [x ** 2 for x in range(1, 11)]
    print(squares)
    
    >>>
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 문자열 리스트에서 길이가 5 이상인 단어만 선택
    words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
    long_words = [ word for word in words if len(word) >= 5]
    prunt(long_words)
    
    >>>
    ['apple', 'banana', 'cherry', 'elderberry']
  • 리스트의 요소를 변환하여 새로운 리스트 생성
    numbers = [1, 2, 3, 4, 5]
    double = [num * 2 for num in numbers]
    print(double)
    
    >>>
    [2, 4, 6, 8, 10]
    
    리스트 컴프리헨션은 반복문과 조건문을 간결하게 결합하여 다양한 작업을 수행할 수 있으며, 코드를 더욱 읽기 쉽고 간결하게 만들어 줍니다. 그러나 너무 복잡한 표현식이나 여러 조건문을 포함하는 경우에는 가독성이 감소할 수 있으므로 적절하게 사용하는 것이 중요합니다.

2. 집합 컴프리헨션 예제

  • 1부터 10까지의 제곱 값을 갖는 집합 생성
    squares = {x**2 for x in range(1, 11)}
    print(squares)
    
    >>>
    {64, 1, 4, 36, 100, 9, 16, 49, 81, 25}
    # 집합은 순서가 보장되지 않는다. 
  • 문자열 리스트에서 길이가 5 이상인 단어의 집합 생성
    words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
    long_words = { word for word in words if len(word) >= 5}
    print(long_words)
    
    >>>
    {'banana', 'elderberry', 'apple', 'cherry'}
  • 집합의 요소를 변환하여 새로운 집합 생성
    numbers = {1, 2, 3, 4, 5}
    doubled = {num * 2 for num in numbers}
    prunt(doubles)
    
    >>>
    {2, 4, 6, 8, 10}
    위의 예제에서, 집합 컴프리헨션은 리스트 컴프리헨션과 구문적으로 유사합니다. 중괄호({}) 안에 표현식과 반복문, 조건문을 결합하여 집합을 생성합니다. 집합 컴프리헨션은 중복된 요소를 제거하고 유일한 값을 가지는 집합을 생성합니다. 집합 컴프리헨션은 리스트 컴프리헨션과 마찬가지로 코드를 간결하게 작성하고, 반복문과 조건문을 함께 사용하여 집합을 생성할 수 있습니다.

2. 집합 컴프리헨션 예제

  • 1부터 5까지의 숫자를 키로 하고 제곱 값을 값으로 갖는 딕셔너리 생성
    squares = { x: x**2 for x in range(1,6)}
    print(squares)
    
    >>>
    {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
    1. 문자열 리스트의 각 단어의 길이를 키로 하고 해당 단어를 값으로 갖는 딕셔너리 생성

      words = ['apple', 'banana', 'cherry', 'date']
      word_lengths = { word: len(word) for word in words}
      print(word_lengths)
      
      >>>
      {'apple': 5, 'banana': 6, 'cherry': 6, 'date': 4}
  • 리스트의 요소를 필터링하여 특정 조건에 맞는 요소를 키-값 쌍으로 갖는 딕셔너리 생성
profile
Jr. DataEngineer

0개의 댓글