본문 바로가기
초보자를 위한 Python/5. Python 함수

5.7 예제가 있는 파이썬 map() 함수

by 엔터티 2022. 10. 13.
반응형

Python map()은 입력으로 제공된 반복기의 모든 항목에 함수를 적용합니다. 예를 들어 반복자는 리스트, 튜플, 집합, 딕셔너리, 문자열이 될 수 있으며 반복 가능한 맵 개체를 반환합니다. Python map()은 내장 함수입니다.

이 자습서에서는 다음을 배우게 됩니다.

목차

    map() 함수 구문

    map(function, iterator1,iterator2 ...iteratorN)

    매개변수

    • function: iterator에서 사용 가능한 모든 항목에 적용되는 map에 제공되는 필수 기능입니다.
    • iterator: 반복 가능한 필수 객체. 리스트, 튜플 등이 될 수 있습니다. 여러 반복자 객체를 map() 함수에 전달할 수 있습니다.

    반환 값

    map() 함수는 반복자 내부의 모든 항목에 주어진 함수를 적용하고 반복 가능한 맵 객체, 즉 튜플, 리스트 등을 반환합니다.

    map() 함수는 어떻게 작동합니까?

    map() 함수는 함수와 반복 가능한 객체로 두 개의 입력을 받습니다. map()에 주어진 함수는 일반 함수이며 주어진 반복 가능한 객체에 있는 모든 값을 반복합니다.

    예를 들어 숫자 리스트가 있고 각 숫자의 제곱을 찾고 싶다고 가정합니다.

    출력을 얻으려면 주어진 숫자의 제곱을 반환하는 함수가 필요합니다. 기능은 다음과 같습니다.

    def square(n):
    	return n*n

    찾고자 하는 항목 목록은 다음과 같습니다.

    my_list = [2,3,4,5,6,7,8,9]

    이제 map() 파이썬 내장 함수를 사용하여 my_list에 있는 각 항목의 제곱을 구해 보겠습니다.

    최종 코드는 다음과 같습니다.

    def square(n):
        return n*n
    my_list = [2,3,4,5,6,7,8,9]
    updated_list = map(square, my_list)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x0000002C59601748>
    [4, 9, 16, 25, 36, 49, 64, 81]

    map() 함수의 출력은 출력에서 ​​볼 수 있듯이 <map object at 0x0000002C59601748>로 화면에 표시되는 map 객체입니다.

    for loop를 사용하거나 list() 메서드를 사용하여 맵에서 출력을 반복하여 최종 출력을 얻어야 합니다. 주어진 목록 안에 값을 표시하는 코드에서 list()를 사용했습니다.

     

    따라서 map() 함수를 사용하여 각 숫자의 제곱을 얻을 수 있습니다. map에 제공된 목록은 [2,3,4,5,6,7,8,9]이고 square() 함수를 사용하여 출력. map()에서 얻은 값은 [4, 9, 16, 25, 36, 49, 64, 81] 입니다.

     

    map() 함수는 목록의 모든 항목에 square() 함수를 적용합니다. 예를 들어 my_list 변수는 각 숫자의 제곱으로 목록을 업데이트합니다. out은 updated_list 변수에 저장됩니다.

    Python 내장 함수와 함께 map() 사용

    Python map() 함수는 내장 함수이며 Python에서 사용할 수 있는 다른 내장 함수와 함께 사용할 수도 있습니다. 예제에서 우리는 주어진 값을 반올림하는 파이썬 round() 내장 함수를 사용할 것입니다.

     

    예시

    내가 가지고있는 목록은 my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] 입니다.

    목록에 있는 각 항목에 대해 반올림된 값이 필요합니다. map()에 대한 함수로 round()를 사용할 것입니다.

    my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
    updated_list = map(round, my_list)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x000000E65F901748>
    [3, 4, 4, 6, 6, 8, 8, 10]

    round() 함수는 목록의 모든 항목에 적용되며 출력에 표시된 대로 모든 값이 반올림된 목록을 반환합니다.

     

    반복자로 문자열과 함께 map() 사용

    문자열에서 map()을 사용할 수도 있습니다. 파이썬에서 문자열은 배열처럼 작동하므로 map() 내부에서 쉽게 사용할 수 있습니다.

    예제에는 주어진 문자열을 대문자로 변환하는 myMapFunc() 함수가 있습니다. myMapFunc() 함수는 map() 함수에 제공됩니다. map 함수는 문자열을 myMapFunc()에 전달하여 주어진 문자열을 대문자로 변환하는 작업을 처리합니다.

    def myMapFunc(s):
        return s.upper()
    my_str = "welcome to Entity05 tutorials!"
    updated_list = map(myMapFunc, my_str)
    print(updated_list)
    for i in updated_list:
        print(i, end="")

    출력 

    <map object at 0x000000DF2E711748>
    WELCOME TO ENTITY05 TUTORIALS!

     

    숫자 목록과 함께 map() 사용

    map()의 목록으로 작업하려면 숫자 목록을 가져와 목록의 각 숫자에 10을 곱합니다.

    우리가 사용할 목록은 [2,3,4,5,6,7,8,9]입니다. myMapFunc() 함수는 주어진 숫자에 10을 곱하는 것을 처리합니다. 함수는 목록과 함께 매핑하도록 제공됩니다.

    예시

    def myMapFunc(n):
        return n*10
    
    my_list = [2,3,4,5,6,7,8,9]
    
    updated_list = map(myMapFunc, my_list)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x000000EE2C061898>
    [20, 30, 40, 50, 60, 70, 80, 90]

    우리가 보는 출력은 목록의 각 숫자가

    10을 곱합니다.

     

    튜플과 함께 map() 사용

    튜플은 항목이 쉼표로 구분되고 대괄호로 묶인 Python의 개체입니다. 예제에서는 문자열 값이 있는 튜플을 사용합니다. 우리가 사용할 함수는 주어진 값을 대문자로 변환합니다.

    예시

    def myMapFunc(n):
        return n.upper()
    
    my_tuple = ('php','java','python','c++','c')
    
    updated_list = map(myMapFunc, my_tuple)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x0000009C3C3A16A0>
    ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

    우리가 얻는 출력은 모든 값이 대문자로 변환된 튜플 백입니다.

     

    딕셔너리와 함께 map() 사용

    Python에서 딕셔너리는 중괄호({})를 사용하여 생성됩니다. 딕셔너리는 반복자이므로 map() 함수 내에서 사용할 수 있습니다. 이제 map() 함수 내에서 딕셔너리를 반복자로 사용합시다.

     

    다음 예제는 map() 내부에서 딕셔너리 반복자의 작동을 보여줍니다.

    def myMapFunc(n):
        return n*10
    my_dict = {2,3,4,5,6,7,8,9}
    finalitems = map(myMapFunc, my_dict)
    print(finalitems)
    print(list(finalitems))

    출력

    <map object at 0x0000007EB451DEF0>
    [20, 30, 40, 50, 60, 70, 80, 90]

     

    Set과 함께 map() 사용

    Python에서 집합은 중괄호(())로 묶인 항목의 정렬되지 않은 컬렉션입니다. set()도 반복자이기 때문에 map() 함수 내에서 사용할 수 있습니다.

    다음은 map() 내부에서 반복자로 set을 사용하는 작업 예입니다.

    def myMapFunc(n):
        return n*10
    my_set = {2,3,4,5,6,7,8,9}
    finalitems = map(myMapFunc, my_set)
    print(finalitems)
    print(list(finalitems))

    출력

    <map object at 0x000000AC8F05DEF0>
    [20, 30, 40, 50, 60, 70, 80, 90]

     

    Lambda 함수와 함께 map() 사용

    Python에서 람다 표현식은 익명 함수를 구성하는 데 사용됩니다. def를 사용하여 일반 함수를 정의하는 것처럼 람다 키워드를 사용해야 합니다.

     

    따라서 예제에서는 map() 내부의 람다 함수를 사용할 것입니다. 람다 함수는 목록의 각 값에 10을 곱합니다.

    my_list = [2,3,4,5,6,7,8,9]
    updated_list = map(lambda x: x * 10, my_list)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x000000BD18B11898>
    [20, 30, 40, 50, 60, 70, 80, 90]

     

    map() 함수 내에서 다중 반복자 사용

    예 1: 두 개의 목록 반복자를 map()에 전달

    하나 이상의 반복자, 즉 리스트, 튜플 등을 모두 동시에 map() 함수에 보낼 수 있습니다.

     

    예를 들어 두 개의 리스트를 추가하려는 경우입니다. map() 함수를 사용하여 동일한 작업을 수행할 수 있습니다. my_list1과 my_list2의 두 가지 목록을 사용할 것입니다.

    아래 예에서는 my_list1의 첫 번째 항목이 my_list2의 첫 번째 항목에 추가됩니다. myMapFunc() 함수는 my_list1과 my_list2의 항목을 가져와서 둘 다의 합계를 반환합니다.

    다음은 map() 함수를 사용하여 두 개의 주어진 리스트를 추가하는 작업 예입니다.

    def myMapFunc(list1, list2):
        return list1+list2
    
    my_list1 = [2,3,4,5,6,7,8,9]
    my_list2 = [4,8,12,16,20,24,28]
    
    updated_list = map(myMapFunc, my_list1,my_list2)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x0000004D5F751860>
    [6, 11, 16, 21, 26, 31, 36]

    예 2: 하나의 튜플과 목록 반복자를 map()에 전달

    map() 함수에서 리스트와 튜플 반복자를 사용할 것입니다. 이 함수는 map에 제공됩니다. myMapFunc()는 목록과 Tuple에서 항목을 가져옵니다. 항목은 밑줄(_)로 결합됩니다. 작업 예는 아래와 같습니다.

    def myMapFunc(list1, tuple1):
        return list1+"_"+tuple1
    
    my_list = ['a','b', 'b', 'd', 'e']
    my_tuple = ('PHP','Java','Python','C++','C')
    
    updated_list = map(myMapFunc, my_list,my_tuple)
    print(updated_list)
    print(list(updated_list))

    출력

    <map object at 0x00000059F37BB4E0>
    ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

     

    요약

    • Python map()은 입력으로 제공된 반복기의 모든 항목에 함수를 적용하는 내장 함수입니다. 예를 들어 반복자는 리스트, 튜플, 문자열 등이 될 수 있으며 반복 가능한 맵 개체를 반환합니다.
    • map() 함수는 반복자 내부의 모든 항목에 주어진 함수를 적용하고 반복 가능한 맵 객체, 즉 튜플, 리스트 등을 반환합니다.
    • Python map() 함수는 내장 함수이며 Python에서 사용할 수 있는 다른 내장 함수와 함께 사용할 수도 있습니다.
    • 튜플은 항목이 쉼표로 구분되고 대괄호로 묶인 Python의 개체입니다. 예제에서는 문자열 값이 있는 튜플을 사용합니다. 우리가 사용할 함수는 주어진 값을 대문자로 변환합니다.
    • Python에서 딕셔너리는 중괄호({})를 사용하여 생성됩니다. 사전은 반복자이므로 map() 함수 내에서 사용할 수 있습니다.
    • Python에서 set은 중괄호(())로 묶인 항목의 정렬되지 않은 컬렉션입니다. set()도 반복자이기 때문에 map() 함수 내에서 사용할 수 있습니다.
    • Python에서 람다 식(또는 람다 형식)은 익명 함수를 구성하는 데 사용됩니다. 따라서 map() 내부에서 람다를 사용하려면 람다 키워드를 사용해야 합니다.
    • 하나 이상의 반복자, 즉 리스트, 튜플을 map() 함수에 보낼 수 있습니다.

    반응형

    댓글