buc0824   6년 전

문제를 풀다가 띄어쓰기가 포함된 입력을 받는 문제를 푸는데 

왜 int(input().split())은 에러가 나고

왜 list(map(int,input().split()))은 에러가 안나는 거죠?

두번째 함수는 input().split()을 한 후에 int 형변환 시킨걸 리스트로 만드는 것으로 이해하고있는데 그럼 첫번째도 맞아야 생각이 되서 질문드립니다.


jh05013   6년 전

map의 유무의 차이입니다.

예를 들어 12 34 56이라는 입력이 들어왔다고 하면 input().split()은 ["12", "34", "56"]입니다. int()는 숫자로 이루어진 문자열, 또는 float 등 다른 수 형태의 데이터를 **하나의** int로 변환하기 때문에 여기에 리스트를 넣을 수도 없고, "12 34 56" 역시 넣을 수 없습니다.

map(f, L)은 L에 있는 원소에 각각 f를 적용합니다. map(int, ["12", "34", "56"])을 하면 int("12"), int("34"), int("56")이 나옵니다. map을 한다고 바로 list가 나오지는 않기 때문에 (이건 자세히 설명하면 조금 어려워질 것 같습니다) list를 씌워서 리스트 [12, 34, 56]을 얻습니다.

buc0824   6년 전

깔끔한 답변 감사합니다!

댓글을 작성하려면 로그인해야 합니다.