lambda함수에 list를 씌워주지 않았을 때 나타나는 결과값에 대한 질문 ( python )

조회수 485회

a=[1,2,3,4,5,6,7,8,9,9,1,5,4,32,2]

a=map(lambda x :x*10,a)
print(a)

리스트에 있는 것들을 한번에 *10 해주려고 lambda 함수를 썼습니다.

근데 왜 리스트를 안 씌우면

map object at 0x000002659B33DF10

라고 뜨는건가요?

리스트를 안 씌운 저 결과가 의미하는 것이 궁금합니다. 16진수로 나타낸 위치(?) 같은건가요..?

답변 감사합니다. 좋은 하루 되세요!

1 답변

  • idle 에서 아래 예시를 한번 한줄씩 그대로 실행해 보세요. 성능이 좋지 않은 컴퓨터에서 실행해 보면 더 좋습니다.

    >>> a = list(range(1000000))
    >>> b = map(lambda x: x*10, a)
    >>> c = list(b)
    >>> a = list(range(100000000))
    >>> b = map(lambda x: x*10, a)
    >>> c = list(b)
    >>> import time
    >>> def func():
        t = time.time()
        a = list(range(100000000))
        print(f"assigning a (list) took {time.time()-t} sec")
        t = time.time()
        b = map(lambda x: x*10, a)
        print(f"assigning b (map) took {time.time()-t} sec")
        t = time.time()
        c = list(map(lambda x: x*10, b))
        print(f"assigning c (list of map) took {time.time()-t} sec")
    
    
    >>> func()
    assigning a (list) took 5.798054933547974 sec
    assigning b (map) took 0.0 sec
    assigning c (list of map) took 34.67618656158447 sec
    >>> 
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)