본문 바로가기

파이썬

[Python]#22 map()

map() 함수는 iterable의 각 요소에 함수를 적용하고 결과를 포함하는 새 iterable을 생성해야 할 때마다 유용합니다.

다음은 map()을 사용하려는 몇 가지 이유입니다.

편의성 및 가독성: map()을 사용하면 for 루프를 사용하여 iterable을 반복하고 각 요소에 함수를 적용하는 것보다 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 이는 복잡한 작업이나 대규모 데이터 세트에 특히 유용할 수 있습니다.
성능: 어떤 경우에는 map()을 사용하는 것이 for 루프를 사용하여 iterable을 반복하고 각 요소에 함수를 적용하는 것보다 빠를 수 있습니다. 이는 map()이 C로 구현되어 성능에 최적화되어 있는 반면 for 루프는 Python으로 구현되어 속도가 느릴 수 있기 때문입니다.
함수형 프로그래밍: 'map()' 함수는 함수형 프로그래밍의 일반적인 도구로, 함수는 일류 객체로 취급되며 전달되어 다른 함수의 인수로 사용될 수 있습니다. map()을 사용하면 특히 기능적인 용어로 생각하는 데 익숙한 경우 코드를 더 기능적이고 쉽게 추론할 수 있습니다.
손쉬운 병렬화: 대규모 데이터 세트 또는 계산 집약적인 작업으로 작업할 때 코드를 병렬화하여 여러 프로세서 코어 또는 분산 컴퓨팅 리소스를 활용하는 것이 유용할 수 있습니다. map()을 사용하면 map()에 전달하는 함수가 iterable의 각 요소에서 독립적으로 실행될 수 있으므로 코드를 병렬화하기가 더 쉬워집니다.
전반적으로 map()을 사용하는 것은 iterable로 작업하고 해당 요소에 함수를 적용하는 강력하고 유연한 방법이 될 수 있습니다. 코드를 더 간결하고 읽기 쉽고 성능 있게 만드는 동시에 함수형 프로그래밍 개념을 장려하고 병렬화를 더 쉽게 만들 수 있습니다.

 

다음은 map() 함수를 사용할 수 있는 몇 가지 예입니다.

데이터 변환: 큰 데이터 세트가 있고 해당 데이터 세트의 각 요소에 함수를 적용해야 하는 경우 map()을 사용하여 변환된 데이터를 포함하는 새 iterable을 만들 수 있습니다.
유형 변환: 예를 들어 정수로 변환해야 하는 문자열 목록이 있는 경우 map()을 사용하여 목록의 각 문자열에 int() 함수를 적용하고 새 정수 목록.
간단한 계산: 목록의 각 요소에 대해 각 숫자의 두 배 또는 제곱과 같은 간단한 계산을 수행해야 하는 경우 map()을 사용하여 계산된 값을 포함하는 새 목록을 만들 수 있습니다.
전반적으로 map() 함수는 간결하고 효율적인 방식으로 iterable에 대한 간단한 작업을 수행하기 위한 강력한 도구입니다. 코드를 단순화하고 더 쉽게 읽고 유지 관리할 수 있습니다.



Python에서 map() 함수는 함수와 iterable을 인수로 취하고 각 요소가 원래의 해당 요소에 함수를 적용한 결과인 새 iterable을 반환하는 내장된 고차 함수입니다. 반복 가능

다음은 map() 함수의 구문입니다.

map(function, iterable, ...)

다음은 map() 함수의 구문입니다.function: iterable의 각 요소에 적용될 함수. 최소한 하나의 인수가 있어야 합니다.
iterable: 함수에 전달될 iterable(예: 목록, 튜플, 집합 또는 사전)입니다.
map() 함수는 이터러블의 각 요소에 함수를 적용한 결과를 포함하는 이터러블인 지도 객체를 반환합니다. 결과 목록을 얻기 위해 list() 함수를 사용하여 지도 객체를 목록으로 변환할 수 있습니다.

다음은 목록의 요소를 두 배로 늘리기 위해 map() 함수를 사용하는 예입니다:

def double(x):
    return x * 2

numbers = [1, 2, 3, 4, 5]

doubled_numbers = map(double, numbers)

print(list(doubled_numbers))

이 예에서 double() 함수는 숫자를 입력으로 사용하고 해당 숫자의 두 배를 반환합니다. numbers 목록에는 1부터 5까지의 숫자가 포함되어 있습니다. map() 함수를 사용하여 double() 함수를 numbers 목록의 각 요소에 적용하여 배가된 숫자의 새로운 반복 가능 항목을 만듭니다. 마지막으로 iterable을 목록으로 변환하고 인쇄합니다.

이 프로그램의 출력은 다음과 같습니다.

[2, 4, 6, 8, 10]

따라서 map() 함수가 double() 함수를 numbers 목록의 각 요소에 적용하고 두 배로 된 값을 포함하는 새로운 iterable을 반환했음을 알 수 있습니다.
일반적으로 map() 함수는 iterable의 각 요소에 함수를 적용하여 각 함수 호출의 결과를 포함하는 새로운 iterable을 생성하는 데 사용할 수 있습니다. 이것은 많은 수의 값에 대해 간단한 계산이나 변환을 수행해야 하는 상황에서 매우 유용할 수 있습니다.

 

다음은 map()과 동일한 결과를 얻기 위해 루프를 사용하는 방법에 대한 예입니다.

def double(x):
    return x * 2

numbers = [1, 2, 3, 4, 5]

doubled_numbers = []

for n in numbers:
    doubled_numbers.append(double(n))

print(doubled_numbers)

이 예에서 double() 함수는 숫자를 입력으로 사용하고 해당 숫자의 두 배를 반환합니다. numbers 목록에는 1부터 5까지의 숫자가 포함됩니다. for 루프를 사용하여 numbers 목록의 각 요소를 반복하고 double() 함수를 각 요소에 적용하고 결과를 doubled_numbers에 추가합니다. 목록. 마지막으로 doubled_numbers 목록을 인쇄합니다.

[2, 4, 6, 8, 10]

따라서 루프가 map() 함수와 동일한 결과를 달성하여 두 배 값을 포함하는 새 목록을 생성하는 것을 볼 수 있습니다.

그러나 map()을 사용하는 것이 루프를 사용하는 것보다 더 간결하고 효율적일 수 있습니다. 특히 대규모 데이터 세트나 복잡한 함수의 경우 더욱 그렇습니다. map() 함수는 성능에 최적화되어 있으며 경우에 따라 루프보다 빠를 수 있습니다. 또한 map()을 사용할 때 코드가 더 간결하고 읽기 쉬워 유지 관리 및 디버그가 더 쉬워집니다.