Python을 배워보자/11. 기타 심화

파이썬 컴프리헨션

_Blue_Sky_ 2024. 9. 26. 09:42
728x90
728x90

파이썬 심화: 컴프리헨션 완벽 정복 가이드 (리스트, 딕셔너리, 세트 컴프리헨션)

서론

파이썬의 컴프리헨션은 코드를 간결하고 표현력 있게 만들어주는 강력한 기능입니다. 반복문과 조건문을 한 줄에 표현하여 리스트, 딕셔너리, 세트 등의 자료구조를 생성할 수 있습니다. 컴프리헨션을 능숙하게 활용하면 코드 가독성을 높이고, 불필요한 반복문을 줄여 프로그램 성능을 향상시킬 수 있습니다.

이 글에서는 파이썬 컴프리헨션의 기본 개념부터 심화 내용까지 상세히 다루고, 다양한 예시를 통해 컴프리헨션을 활용하는 방법을 설명합니다.

1. 리스트 컴프리헨션

리스트 컴프리헨션은 가장 기본적인 형태의 컴프리헨션으로, 새로운 리스트를 생성하는 데 사용됩니다.

# 일반적인 방법
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for num in numbers:
    squared_numbers.append(num**2)

# 리스트 컴프리헨션
squared_numbers = [num**2 for num in numbers]
 
  • 구조: [표현식 for 요소 in 반복 가능한 객체]
  • 설명:
    • 표현식: 리스트에 추가될 각 요소를 계산하는 부분
    • for 요소 in 반복 가능한 객체: 반복 가능한 객체의 각 요소를 순회하며 표현식을 평가

예시:

  • 짝수만 추출: even_numbers = [num for num in numbers if num % 2 == 0]
  • 문자열 리스트에서 길이가 3 이상인 문자열만 추출: long_words = [word for word in words if len(word) >= 3]
  • 1부터 10까지의 숫자 중 3의 배수의 제곱: squares = [num**2 for num in range(1, 11) if num % 3 == 0]

2. 딕셔너리 컴프리헨션

딕셔너리 컴프리헨션은 새로운 딕셔너리를 생성하는 데 사용됩니다.

# 일반적인 방법
squares = {}
for num in range(1, 6):
    squares[num] = num**2

# 딕셔너리 컴프리헨션
squares = {num: num**2 for num in range(1, 6)}
 
  • 구조: {키: 값 for 요소 in 반복 가능한 객체}
  • 설명:
    • : 딕셔너리의 키
    • : 딕셔너리의 값

예시:

  • 단어와 단어의 길이를 딕셔너리로 만들기: word_lengths = {word: len(word) for word in words}
  • 숫자와 해당 숫자의 제곱근을 딕셔너리로 만들기: sqrt_dict = {num: num**0.5 for num in range(1, 11)}

3. 세트 컴프리헨션

세트 컴프리헨션은 새로운 세트를 생성하는 데 사용됩니다.

# 일반적인 방법
numbers = [1, 2, 2, 3, 3, 3]
unique_numbers = set()
for num in numbers:
    unique_numbers.add(num)

# 세트 컴프리헨션
unique_numbers = {num for num in numbers}
 
  • 구조: {표현식 for 요소 in 반복 가능한 객체}
  • 설명:
    • 세트는 중복된 값을 허용하지 않으므로, 중복된 요소는 자동으로 제거됩니다.

예시:

  • 문자열 리스트에서 중복된 문자 제거: unique_chars = {char for char in word}
  • 1부터 10까지의 숫자 중 짝수만 포함하는 세트: even_set = {num for num in range(1, 11) if num % 2 == 0}

4. 중첩된 컴프리헨션

컴프리헨션은 중첩하여 사용할 수 있습니다.

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

5. 컴프리헨션의 활용

  • 리스트, 딕셔너리, 세트 생성
  • 데이터 필터링
  • 데이터 변환
  • 함수 매핑
  • 조건문과 결합한 복잡한 표현

결론

파이썬 컴프리헨션은 코드를 간결하고 효율적으로 작성하는 데 매우 유용한 도구입니다. 컴프리헨션을 숙달하면 파이썬 코드를 더욱 파이썬답게 작성할 수 있습니다.

참고: 컴프리헨션은 가독성을 높이는 데 도움이 되지만, 너무 복잡한 표현식을 사용하면 오히려 가독성이 떨어질 수 있습니다. 적절한 상황에서 사용하는 것이 중요합니다.

 

728x90
728x90

'Python을 배워보자 > 11. 기타 심화' 카테고리의 다른 글

파이썬 정규 표현식  (0) 2024.09.26
파이썬 람다 표현식  (0) 2024.09.26
파이썬 데코레이터  (0) 2024.09.26