해결된 질문
작성
·
286
0
answer = []
t = map(int, input().split())
answer.append(t)
왜 이렇게 리스트 생성하면 입력하는 값이 answer에 뜨지 않고
[<map object at 0x0000014A5B6EA1A0>]
이런식으로 뜨는건가요?
빈리스트 만들어서 append해도 값이 들어가지 않습니다.
그리고 이렇게 리스트를 만들면
answer[-2]
index 오류가 나는데 왜그런가요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. 제가 답변해드릴게요.
말씀하신대로 input()
함수로 입력한 값들을 리스트에 저장하기 위해서는 map()
함수를 사용하셔야 합니다. 하지만 현재 코드에서는 map()
함수를 사용하여 입력값을 t
에 저장하고, t
를 answer
리스트에 추가하고자 하지만 t
자체가 map
객체로 저장되는 문제가 있어요.
map()
함수는 iterable 객체에 함수를 적용하여 그 결과를 리턴하는 함수이기 때문에, map
객체 자체가 리스트가 아닌 iterable 객체를 가리키게 되는거에요.
따라서, map()
함수를 사용한 결과를 리스트로 변환해주어야 answer
리스트에 원하는 값이 들어갈 수 있습니다. 이를 위해서는 list()
함수를 사용하면 되요.
예를 들어, 다음과 같이 코드를 수정해보세요.
answer = []
t = list(map(int, input().split()))
answer.append(t)
이렇게 하면 입력한 값이 answer
리스트에 저장될 것입니다.
또한, index 오류
가 발생하는 이유는 아직 answer
리스트에 어떤 값도 추가되지 않았을 때, answer[-2]
와 같이 접근하기 때문에 발생하는 것이에요. 빈 리스트의 경우에는 인덱스로 접근할 수 없기 때문에 오류가 발생하는 거에요. index 오류
를 방지하기 위해서는 answer
리스트에 값을 추가한 이후에 인덱스로 접근하도록 해주세요.
다른 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!