Python에서 map() 함수를 사용하는 방법

Python의 map() 함수를 사용하는 방법을 알아보세요. 루프를 작성하지 않고 반복 가능 항목에 함수 적용을 마스터하고 맵을 목록 이해와 비교합니다.

Editor에서 이 솔루션을 사용해 보세요.

개요

데이터 컬렉션을 처리할 때 iterable의 모든 단일 항목에 특정 변환을 적용해야 하는 경우가 많습니다. 예를 들어 문자열 숫자 목록을 정수로 변환하거나 문자열의 데이터베이스 배열을 소문자로 변환하여 정규화합니다. 장황한 `for` 루프를 작성하는 대신 Python은 `map()`이라는 내장 도구를 제공합니다.

`map(function, iterable)` 함수는 변환 함수와 반복 가능 함수를 인수로 받아들입니다. 이터러블의 각 요소에 함수를 적용하고 이터레이터 객체(`map` 객체)를 반환합니다. 반복자로 반환되기 때문에 계산이 느리게 실행됩니다. 요소는 요소를 반복할 때만 처리되므로 대규모 데이터 세트의 메모리가 절약됩니다.

지도 객체의 목록 표현을 즉시 얻으려면 `list()` 생성자 `list(map(func, data))`를 사용하여 결과를 캐스팅해야 합니다. 인라인 실행을 위해 표준 함수, 표준 라이브러리 함수(예: `str` 또는 `len`) 또는 `lambda` 키워드로 선언된 사용자 정의 익명 함수를 `map()`에 직접 전달할 수 있습니다.

코드 및 실행 출력

이 스크립트는 문자열 변환과 함께 map() 함수를 사용하여 컬렉션을 수정하고, 목록 항목을 숫자에 매핑하고, 람다 콜백을 사용하는 방법을 보여줍니다.

# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)

# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)

# 3. Apply custom logic function to items
def normalize_name(name):
    return name.strip().capitalize()

names = ["  alice", "BOB  ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)
터미널 출력
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

단계별 구현

  • 컬렉션의 모든 요소에 적용하려는 변환 기능을 식별하세요.
  • 변환된 요소의 지연 반복자를 생성하려면 map(function_name, iterable)을 호출하세요.
  • 모든 요소를 표준 목록으로 즉시 액세스해야 하는 경우 map() 호출을 list() 내부에 래핑합니다.
  • 빠른 일회성 인라인 변환을 위해 map()을 람다 함수와 결합합니다.

자주 묻는 질문

map()이 목록 이해보다 나은가요?

커뮤니티에서는 일반적으로 목록 이해가 더 읽기 쉽고 파이썬적인 것으로 간주됩니다. 그러나 map()은 최적화된 C 코드 루프를 실행하므로 기존 내장 함수(예: map(str, list))를 적용할 때 더 빠를 수 있습니다.

map()은 여러 반복 가능 항목을 사용할 수 있나요?

예! 변환 함수가 여러 인수를 사용하는 경우 여러 반복 가능 항목을 map()에 전달할 수 있습니다. 예를 들어, map(lambda x, y: x + y, list1, list2)는 요소를 쌍으로 추가합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.