파이썬 리스트값을 전부 정수형으로 변환하려고하는데

조회수 10831회

초짜입니다. line = list(map(str, input().split()))로 리스트를 입력해서 if문을 이용해 ['3','@','#'] 으로 된 리스트를 ['3',5,7]로 잘 바꿨는데 리스트[0] 자리를 int로 바꿀수 있는 방법 없을까요???

line = map(int, line ) 로 해봤는데요 print로 불러올때 오브젝트값이 나오던데 맞는건가요??

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

1 답변

  • 안녕하세요

    line = ['3',5,7]
    line = map(int,line)
    print(line) # 여기서 맵 객체가 출력됨
    
    for t in line: # 내부에 접근하려면 이렇게
        print(t,type(t))
    '''
    <map object at 0x109568b38>
    3 <class 'int'>
    5 <class 'int'>
    7 <class 'int'>
    '''
    

    각각 타입을 찍어보면 int 형이 제대로 찍히네요 :)

    리스트가 반환하기 원하시면

    line = ['3',5,7]
    new_line = list(map(int,line)) # 맵 객체가 아닌 리스트로 보려면..
    print(new_line[0])
    

    이렇게 해주면 됩니다.

    퍄이썬에서는 많은 프로세스가 순회가능한 객체에 대해서 저렇게 객체(순회가능한 객체or iterator)를 반환한데요

    맵 역시 순회가능한 객체니깐 저렇게 반환이 되고 for문으로 사용도 가능합니다.

    굳이 이터러블객체를 반환하게 만든이유는 결국에 메모리를 줄이고 더 빠르기 때문이라고 하네요 :)

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

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

(ಠ_ಠ)
(ಠ‿ಠ)