map함수를 왜 써야하나요?

조회수 630회

map함수에 대해서 배웠습니다. 헌데 어떠한 경우에 사용해야하는지, 얻을 수 있는 이득이 뭔지 모르겠습니다. 그냥 함수를 정의할 때, 인자로 리스트를 받으면 되는게 아닌가요?

즉,

def square(my_list):
    result = []
    for num in my_list:
        result.append(num**2)
    return result

이렇게 하는것과 맵함수를 써서 리스트를 넘기는것과 어떤차이가 있는지 궁금합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

3 답변

  • 제 생각엔, 코드를 읽고 인지하는 관점이 달라지는 것 같습니다.

    학생들 = [ 철수, 영희, 금자, 히데오 ]
    학생들성별 = map(남자냐여자냐, 학생들)
    

    이런 코드를 보면, 간결하게 학생들성별학생들이란 리스트(집합)의 각 학생의 성별을 담고 있는 리스트구나 라고 간단히 이해하고 넘어가게 되죠.

    for 문 나오고 한명한명 이터레이트면서 append 하고 하는 몇줄짜리 코드는, 간단하기는 해도, 약간의 인지과정이 더 필요하고요.

    for 대신에 리스트/딕셔너리/셋 컴프리헨션을 자주 사용하는 이유도 마찬가지라고 생각되고요.

    성능상의 잇점도 있다고 하는데, 왜 그런지, 정말 그런지는 잘 모르겠습니다.

  • https://bluese05.tistory.com/58 일단 이 내용을 참조하시고요.....함수 정의는 개발자 마음입니다. 어떻게 정의해서 어떻게 사용을 하건 그건 개발자가 원하는 대로 구현만 하면 됩니다. 다만 내장 함수나 다른 라이브러리를 사용한다는 것은 코드를 간결하게 혹은 오류 없이 안정적으로 사용할 수 있기 때문에 사용하는 것입니다. 질문의 답은 간단합니다. map() 함수를 사용하는 것은 그만큼 코드 한 줄로 간단하게 처리가 가능 하기 때문이죠

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 해당 답변도 도움이 되었습니다 채택을 하나밖에 못해 대신 인사남기고갑니다 감사합니다. 알 수 없는 사용자 2019.9.18 17:37
  • 좀 더 깔끔하고 간결한 표현이 가능해서 사용하지 않을까요? for문 보다는 list comprehension이 깔끔하고, 것 보다는 map이 대체로 더 깔끔 하죠.

    // for
    a = [1, 2, 3, 4, 5]
    for i in range(len(a)):
        a[i] = str(a[i])
    
    a = [1, 2, 3, 4, 5]
    // list comprehensions
    a = [str(x) for x in a]
    
    a = [1, 2, 3, 4, 5]
    // map
    a = list(map(str, a))
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 오 이걸 이제봤네요 저도 경험이 좀 쌓이고 다시보니 들어주신 예시가 확 와닿네요 알 수 없는 사용자 2020.1.14 14:22

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)