파이썬 컴프리헨션(Comprehension)

Minsang Yu·2023년 6월 6일
0

컴프리헨션( 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개의 댓글