Python

Python - 고급 데이터 조작

thebasics 2024. 10. 29. 17:00

목차

  1. 고급 데이터 조작이란?
  2. 고차 함수의 개념
  3. map 함수
    • map 함수란?
    • map 함수의 사용법과 예시
  4. filter 함수
    • filter 함수란?
    • filter 함수의 사용법과 예시
  5. reduce 함수
    • reduce 함수란?
    • reduce 함수의 사용법과 예시
  6. 예시 코드
  7. 결론
  8. 관련 자료 및 추가 학습 자료

1. 고급 데이터 조작이란?

고급 데이터 조작은 Python에서 제공하는 고차 함수를 활용하여 데이터를 효율적으로 처리하고 변환하는 방법을 의미합니다. 고차 함수는 하나 이상의 함수를 인자로 받거나, 함수를 반환하는 함수를 의미하며, 이를 통해 복잡한 데이터 연산을 간결하게 표현할 수 있습니다. map, filter, reduce는 대표적인 고차 함수로, 대량의 데이터를 처리하고 변환하는 작업에 사용됩니다.


2. 고차 함수의 개념

고차 함수(Higher-Order Function)는 다음 두 가지 중 하나를 충족하는 함수입니다:

  • 하나 이상의 함수를 인자로 받는 함수
  • 함수를 반환하는 함수

이러한 고차 함수는 데이터 처리 로직을 재사용 가능하게 하고, 코드의 가독성을 높이며, 데이터 연산을 더 효율적으로 수행할 수 있게 해줍니다.


3. map 함수

map 함수란?

map 함수는 시퀀스(리스트, 튜플 등)의 각 요소에 함수를 적용하여 새로운 시퀀스를 생성하는 함수입니다. 이때 적용할 함수는 시퀀스의 각 요소를 인자로 받아 변환된 값을 반환하는 함수여야 합니다.

  • 구문:
    map(함수, 시퀀스)

map 함수의 사용법과 예시

  • 예시: 리스트 요소를 두 배로:

    numbers = [1, 2, 3, 4, 5]
    doubled = map(lambda x: x * 2, numbers)
    print(list(doubled))  # [2, 4, 6, 8, 10]
    • 이 코드는 numbers 리스트의 각 요소를 두 배로 만드는 함수를 map을 통해 적용하고, 그 결과를 새로운 리스트로 반환합니다.
  • 예시: 여러 시퀀스에 동시에 적용:

    numbers1 = [1, 2, 3]
    numbers2 = [4, 5, 6]
    summed = map(lambda x, y: x + y, numbers1, numbers2)
    print(list(summed))  # [5, 7, 9]
    • 두 개의 리스트를 받아 각 요소를 더한 결과를 반환합니다.

4. filter 함수

filter 함수란?

filter 함수는 시퀀스의 각 요소에 대해 함수를 적용하여, 해당 함수가 True를 반환하는 요소만으로 구성된 새로운 시퀀스를 생성합니다. 이때 사용되는 함수는 각 요소를 인자로 받아 불리언 값을 반환하는 함수여야 합니다.

  • 구문:
    filter(함수, 시퀀스)

filter 함수의 사용법과 예시

  • 예시: 짝수 필터링:

    numbers = [1, 2, 3, 4, 5, 6]
    evens = filter(lambda x: x % 2 == 0, numbers)
    print(list(evens))  # [2, 4, 6]
    • 이 코드는 numbers 리스트에서 짝수만 선택하여 새로운 리스트로 반환합니다.
  • 예시: 문자열 길이 필터링:

    words = ["apple", "banana", "cherry", "date"]
    long_words = filter(lambda word: len(word) > 5, words)
    print(list(long_words))  # ['banana', 'cherry']
    • words 리스트에서 문자열 길이가 5보다 큰 단어만 선택합니다.

5. reduce 함수

reduce 함수란?

reduce 함수는 시퀀스의 각 요소를 누적하여 단일 값을 생성하는 함수입니다. reduce는 파이썬 3부터는 functools 모듈에서 제공되며, 시퀀스의 처음 두 요소에 함수를 적용하고, 그 결과와 다음 요소에 계속해서 함수를 적용하여 단일 값을 생성합니다.

  • 구문:
    from functools import reduce
    reduce(함수, 시퀀스)

reduce 함수의 사용법과 예시

  • 예시: 리스트 요소의 합계:

    from functools import reduce
    
    numbers = [1, 2, 3, 4, 5]
    total = reduce(lambda x, y: x + y, numbers)
    print(total)  # 15
    • 이 코드는 numbers 리스트의 모든 요소를 합산하여 단일 값으로 반환합니다.
  • 예시: 리스트 요소의 곱:

    from functools import reduce
    
    numbers = [1, 2, 3, 4, 5]
    product = reduce(lambda x, y: x * y, numbers)
    print(product)  # 120
    • numbers 리스트의 모든 요소를 곱하여 결과를 반환합니다.

6. 예시 코드

map을 사용한 데이터 변환

numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x ** 2, numbers)
print(list(squared))  # [1, 4, 9, 16, 25]

filter를 사용한 조건에 따른 데이터 선택

numbers = range(10)
odd_numbers = filter(lambda x: x % 2 != 0, numbers)
print(list(odd_numbers))  # [1, 3, 5, 7, 9]

reduce를 사용한 데이터 누적

from functools import reduce

numbers = [1, 2, 3, 4, 5]
factorial = reduce(lambda x, y: x * y, numbers)
print(factorial)  # 120

7. 결론

Python의 고차 함수인 map, filter, reduce는 데이터 변환 및 처리를 간결하고 효율적으로 수행할 수 있게 해줍니다. map은 시퀀스의 각 요소에 함수를 적용하여 새로운 시퀀스를 생성하고, filter는 시퀀스에서 조건을 만족하는 요소만 선택하여 새로운 시퀀스를 만듭니다. reduce는 시퀀스의 요소를 누적하여 단일 값을 생성하는데 유용합니다. 이러한 함수들을 활용하면 복잡한 데이터 조작을 간단하고 명확하게 표현할 수 있습니다. 따라서 고차 함수를 잘 이해하고 활용하면 Python 프로그래밍에서 데이터 처리를 더욱 효율적으로 할 수 있습니다.


8. 관련 자료 및 추가 학습 자료


이 글에서는 Python의 고차 함수 map, filter, reduce를 사용하여 데이터를 효율적으로 변환하고 처리하는 방법을 살펴보았습니다. 이러한 고급 데이터 조작 기술을 이해하고 적용하면 더욱 간결하고 효율적인 Python 코드를 작성할 수 있습니다.

반응형