Python map() 함수, 예제와 함께 설명
게시 됨: 2022-08-25이 자습서에서는 Python map() 함수 를 사용하여 iterable의 모든 항목에 함수를 적용하는 방법을 배웁니다.
Python은 프로그래밍 방식으로 함수 계산으로 작업을 정의할 수 있는 함수형 프로그래밍 패러다임을 지원합니다. Python 함수를 객체로 취급할 수 있습니다. 함수는 다른 함수를 매개변수로 사용하고 다른 함수를 반환할 수 있습니다.
map()
함수는 함수를 인수로 받아 시퀀스의 모든 항목에 적용할 수 있도록 합니다.
이 튜토리얼이 끝나면 Python map()
함수를 사용하여 장황한 루프와 목록 이해를 다시 작성할 수 있습니다. map()
함수를 사용할 수 있는 다양한 방법을 이해하기 위해 몇 가지 예제를 코딩할 것입니다.
Python 목록의 요소에 함수를 적용하는 방법

예를 들어 토론을 시작하겠습니다.
여기서 nums
는 숫자 목록입니다.
nums = [2,4,3,7]
다음으로 self_pow()
함수를 고려하십시오. self_pow()
함수는 인수로 숫자를 받아 숫자 자체의 거듭제곱으로 제곱한 숫자를 반환합니다: n**n.
파이썬에서 **는 지수 연산자입니다. a**b는 b, a b 의 거듭제곱 값을 반환합니다.
def self_pow(n): return n**n
할
nums_pow
: 목록nums
의 모든 요소에self_pow()
함수를 적용하여 새 목록 nums_pow 를 생성합니다.
for 루프 사용
이렇게 하려면 Python에서 for 루프를 사용할 수 있습니다.
-
nums
목록의 모든 숫자에 대해num
을 인수로 사용하여self_pow()
함수를 호출합니다. - 새 목록
nums_pow
에 함수 호출 결과를 추가합니다.
nums_pow = [] for num in nums: nums_pow.append(self_pow(num)) print(nums_pow)
출력에서 모든 숫자 nums
는 자체적으로 발생합니다. nums_pow
목록의 요소는 2 2 , 4 4 , 3 3 ,7 7 입니다.
Output [4, 256, 27, 823543]
목록 이해 사용
목록 이해를 사용하여 이것을 간결하게 만들 수 있습니다. 위의 명시적 for 루프에서 출력 표현식과 루프할 목록을 식별할 수 있습니다.

그런 다음 일반 목록 이해 표현식을 수정할 수 있습니다.
new_list = [<output expression> for item in iterable]
nums_pow
목록을 생성하기 위한 목록 이해 표현식은 다음과 같습니다.
nums_pow = [self_pow(num) for num in nums] print(nums_pow)
출력은 예상대로 for 루프를 사용한 것과 동일합니다.
Output [4, 256, 27, 823543]
루프 및 목록 이해 대신 반복 가능한 모든 항목에 함수를 적용하는 데 도움이 되는 간결한 구문과 함께 Python map()
함수를 사용할 수 있습니다. map 함수의 문법을 배우는 것부터 시작합시다.
파이썬 map() 함수 구문

사용할 일반 구문 Python map()
함수는 다음과 같습니다.
map(function, iterable_1,[iterable_2,...,iterable_n])
map()
함수는 적어도 두 개의 인수( 함수 와 iterable )를 취합니다.
위 구문에서:
- function 은 Python 함수 또는 일반적으로 Python 호출 가능을 나타냅니다. 여기에는 사용자 정의 및 내장 함수, 클래스, 인스턴스 및 클래스 메서드 등이 포함됩니다.
- iterable 은 목록, 튜플 및 문자열과 같은 유효한 Python 이터러블입니다.
- map() 함수는 iterable 의 모든 항목에 함수 를 적용합니다.
map() 함수는 무엇을 반환합니까?
지도 객체를 반환합니다. 그런 다음 list(map(function,iterable)).
사용 사례에 따라 Python 튜플로 캐스팅할 수 있습니다.

이제 Python map()
함수의 구문을 배웠으므로 예제 코딩을 시작하겠습니다.
이 튜토리얼을 따라 하려면 Python 3.x가 있어야 합니다. 그렇지 않으면 Geekflare 온라인 Python 편집기에서 코드 조각을 실행할 수 있습니다.
사용자 정의 함수와 함께 map() 함수를 사용하는 방법

#1 . 이전에는 nums
목록의 모든 숫자에 self_pow()
함수를 적용했습니다. map()
함수의 구문에서 self_pow
함수와 목록 nums
를 인수로 전달할 수 있습니다.
참고 : 함수 호출이 아닌 함수의 이름만 지정해야 합니다. self_pow()
가 아닌 self_pow
를 사용하십시오.
map()
함수는 지도 객체를 반환합니다.
print(map(self_pow,nums)) <map object at 0x7f7d315c14d0>
그런 다음 아래와 같이 list() 함수를 사용하여 지도 객체를 목록으로 캐스팅할 수 있습니다.
nums_pow = list(map(self_pow,nums)) print(nums_pow)
다음은 nums
의 모든 num
이 nums_pow
목록의 num num 에 매핑되는 출력입니다.
Output [4, 256, 27, 823543]
#2 . 인치를 센티미터로 변환하는 다음 함수 inch_to_cm()
를 고려하십시오. 1인치 = 2.54cm .
def inch_to_cm(inch): return inch*2.54
inches
목록의 인치 값을 센티미터로 변환하려면 아래 코드 셀과 같이 map()
함수를 사용할 수 있습니다.
inches = [5.54,3.4,1,25,8.2] cms = list(map(inch_to_cm,inches)) print(cms)
cms
목록에는 센티미터로 표시된 인치 값이 포함됩니다.
Output [14.0716, 8.636, 2.54, 63.5, 20.828]
내장 함수와 함께 map() 함수를 사용하는 방법

이 섹션에서는 Python에서 내장 함수와 함께 map()
을 사용하는 방법을 배웁니다.
#1 . 목록 strings
은 프로그래밍 언어 목록입니다. 프로그래밍 언어 문자열을 대문자로 포함하는 새 목록 strings_upper
를 만들고 싶습니다.
strings = ['JavaScript','Rust','Python','Go']
기본 제공 문자열 메서드
.upper()
는 문자열에 대해 작동하고 대문자로 서식이 지정된 복사본을 반환합니다.
strings_upper = list(map(str.upper,strings)) print(strings_upper)
strings_upper
목록에는 대문자로 형식이 지정된 목록 strings
의 문자열이 포함됩니다.
Output ['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']
#2 . Python의 내장 len()
함수는 시퀀스를 인수로 받아 길이를 반환합니다. strings
목록에서 각 문자열의 길이를 찾으려면 아래와 같이 map()
함수를 사용하고 각 문자열에 길이 함수를 적용할 수 있습니다.
strings_len = list(map(len,strings)) print(strings_len)
Output [10, 4, 6, 2]
#3 . 튜플과 같은 다른 컬렉션과 함께 map()
함수를 사용할 수 있습니다.

다음 예에는 침실, 면적 및 집이 위치한 도시의 수에 대한 정보가 포함된 튜플이 포함되어 있습니다.
Python에서 type()
함수는 모든 Python 객체의 데이터 유형을 반환합니다. 이 튜플에 있는 모든 항목의 데이터 유형을 가져오려면 map()
함수를 사용하여 각 튜플 항목에 대해 type
함수를 호출할 수 있습니다.
house = (2,758.5,'Bangalore') house_elt_type = tuple(map(type,house)) print(house_elt_type)
맵 개체를 튜플로 캐스트했습니다. 목록이나 다른 컬렉션으로 캐스팅할 수도 있습니다.
아래 출력에서 2, 758.5 및 Bangalore의 데이터 유형이 각각 'int', 'float' 및 'str'로 추론되었음을 알 수 있습니다.
Output (<class 'int'>, <class 'float'>, <class 'str'>)
#4 . Python에서는 내장 모듈을 가져오고 모듈에 정의된 기능을 사용할 수 있습니다.
nums
목록에 있는 모든 숫자의 제곱근을 계산하려면 수학 모듈에서 제곱근 함수 sqrt
를 사용할 수 있습니다.
import math nums = [30,90,34,45,97] nums_sqrt = list(map(math.sqrt,nums)) print(nums_sqrt)
Output [5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]
위의 출력은 구문 분석하고 따르기 어렵습니다. 소수점 이하 두 자리까지 각 제곱근 값을 반올림할 수 있습니다.
Python에서 부동 소수점 숫자를 반올림하는 방법
부동 소수점 값을 가져와 소수점 이하 두 자리로 반올림하는 함수 round_2()
를 정의해 보겠습니다.
def round_2(num): return round(num,2)
이제 round_2
및 nums_sqrt
목록과 함께 map()
함수를 사용할 수 있습니다.
nums_sqrt_round = list(map(round_2,nums_sqrt)) print(nums_sqrt_round)
Output [5.48, 9.49, 5.83, 6.71, 9.85]
내부 맵 함수가 제곱근 list nums_sqrt
를 계산하는 데 사용되고 외부 맵 함수가 반올림 연산을 수행하는 중첩된 map()
함수를 사용할 수도 있습니다.
nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums)))) print(nums_sqrt_round)
Output [5.48, 9.49, 5.83, 6.71, 9.85]
출력은 위의 두 접근 방식 모두에서 동일합니다. 그러나 위에 표시된 것처럼 함수를 중첩할 때 코드를 읽고 유지 관리할 수 있는지 확인해야 합니다.
Lambda 함수와 함께 map() 함수를 사용하는 방법

이전 섹션에서 내장 및 사용자 정의 함수와 함께 Python map()
함수를 사용하는 방법을 배웠습니다. 이제 Python에서 익명인 람다 함수와 함께 map() 함수를 사용하는 방법을 배웁니다.
때로는 본문에 한 줄의 코드만 포함된 함수가 있고 함수를 한 번만 사용하고 프로그램의 다른 곳에서 참조하지 않아야 할 수도 있습니다. Python에서 람다 함수 와 같은 함수를 정의할 수 있습니다.
참고 :
lambda args: expression
은 Python 람다 함수를 사용하는 일반적인 구문입니다.
#1 . 다음 목록 strings
을 고려하십시오. 각 문자열의 반전된 복사본을 포함하는 strings_rev
목록을 얻으려고 한다고 가정합니다.
strings = ['JavaScript','Rust','Python','Go']
문자열 슬라이싱을 사용하여 Python 문자열을 뒤집을 수 있습니다.
참고 : 이것은 문자열 슬라이싱 표현식
str[start:stop:step]
의 일반화입니다.–
start
및stop
값이 없으면 슬라이스는 문자열의 시작 부분에서 시작하여 문자열의 끝까지 확장됩니다.
–step
의 음수 값은 문자열의 끝에서 시작하는 슬라이스를 제공합니다.
– 따라서str[::-1]
은 str의 반대 복사본을 반환합니다.
다음 람다 함수를 사용할 수 있습니다. lambda x:x[::-1]
아래와 같이 map 함수 내부.
strings_rev = list(map(lambda x:x[::-1],strings)) print(strings_rev)
다른 예와 마찬가지로 지도 개체를 목록으로 캐스팅합니다. 출력에서 목록 문자열의 각 문자열이 반전되었음을 알 수 있습니다.
Output ['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']
#2 . 이전 섹션에서 숫자 목록에 있는 모든 숫자의 제곱근을 계산한 다음 각 제곱근 값을 소수점 이하 두 자리로 반올림했습니다.
이를 위해 round_2()
함수를 사용했습니다. round_2()
함수를 람다 함수로 다시 작성하고 아래에서 설명하는 map()
함수와 함께 사용합시다.
nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt)) print(nums_sqrt_round_l)
아래에서 볼 수 있듯이 출력은 round_2()
함수를 사용하여 얻은 것과 동일합니다.
Output [5.48, 9.49, 5.83, 6.71, 9.85]
여러 Iterable과 함께 map() 함수를 사용하는 방법

우리가 본 예제에서 정확히 하나의 iterable의 모든 항목에 함수를 적용했습니다.
때로는 두 개 이상의 인수를 취하는 함수가 있을 수 있습니다. 이 경우 각 인수는 목록 또는 유사한 컬렉션에 저장됩니다.
여러 목록과 함께 Python map() 함수를 사용할 수도 있습니다.
#1 . length
와 breadth
를 입력으로 받아 length*breadth
면적을 반환하는 다음 함수 area()
를 고려하십시오.
def area(length,breadth): return length*breadth
서로 다른 직사각형의 길이와 너비는 각각 lengths
와 breadths
라는 두 개의 개별 목록에 저장됩니다.
lengths = [4,8,10,18] breadths = [9,4,6,11]
map()
함수를 사용하여 lengths
와 breadths
목록을 모두 전달하여 위 목록에 area 함수를 적용할 수 있습니다.
areas = list(map(area,lengths,breadths)) print(areas)
함수 영역은 두 개의 인수를 허용하므로 길이 및 너비 값은 각각 lengths
breadths
목록에서 사용됩니다.
Output [36, 32, 60, 198]
#2 . Python 수학 모듈에는 임의의 밑수에 대한 로그를 계산하는 데 도움이 되는 log 함수가 있습니다.
참고 : log(x, base) 는 log x 값을 base , log base x 값으로 지정된 밑으로 반환합니다. 밑이 지정되지 않은 경우 기본 밑 값은 e 입니다(log는 자연 로그를 계산함).
이 예에서:
- 목록
x
는 로그를 계산하려는 값에 해당합니다. -
base
목록에는 로그 계산에 사용할 모든 기본 값이 포함됩니다.
x = [2,6,12,10] base = [2,3,2,5]
Python map() 함수를 math.log
, 목록, x
및 base
와 함께 사용하여 다음과 같이 새 목록 log_x
를 얻을 수 있습니다.
log_x = list(map(math.log,x,base)) print(log_x)
다음은 출력입니다.
Output [1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]
결론
이 튜토리얼에서 배운 내용을 요약하면 다음과 같습니다.
- Python map() 함수는 map(function, iterable(s)) 구문을 사용하여 함수와 iterable의 두 가지 이상의 인수를 취합니다.
- 함수 는 모든 유효한 Python 호출 가능일 수 있습니다.
- 함수 가 k 인수를 받을 때 함수와 함께
map()
함수를 사용하고 iterable에서 k 인수 각각을 사용합니다.
다음으로 Python에서 집합으로 작업하는 방법을 배웁니다.