반례는 "ab ", 단어 뒤에 공백이 오는 것입니다.
답 : 1
글쓴이님의 코드 : 2
그 이유는, ' '(공백)을 기준으로 나눌 때, ab와 빈 문자열이 생성되어서 ['ab' , ''] , 길이가 2라는 결과가 나오게 됩니다.
파이썬 공식문서에 의하면, sep 이 주어지면, 연속된 구분자는 묶이지 않고 빈 문자열을 구분하는 것으로 간주합니다. 이 말은, 구분자(sep)가 단어 사이에 끼이는 경우,
"ab cd" 같은 경우는 ab와 cd를 정상적으로 리턴하지만, 그렇지 않은 경우, "ab ", " ab" 처럼 또는 "ab cd" 같은 경우, 빈 문자열을 포함해서 리턴하게 되는 것입니다.
그러나, split()의 경우,파이썬 공식문서에 의하면,
sep 이 지정되지 않거나 None
이면, 다른 분할 알고리즘이 적용됩니다: 연속된 공백 문자는 단일한 구분자로 간주하고, 문자열이 선행이나 후행 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않습니다.
따라서 위와 같이 빈 문자열이 생기는 경우가 없어집니다.
armsflex95 3년 전
아래 두 코드에서 차이점은 일단 문장을 받아서 단어 분류시킬때 split() 에 차이를 두었는데,
1. split(' ') : 공백을 지정하여 단어 분류하느냐 -> \n 개행 발생 -> 개행 제거
2. split() : 자동으로 공백 기준으로 단어 분류
해서 결과값은 같게 나오는거 같은데 1번은 틀리고 2번은 맞다고 합니다.
1번의 반례가 궁금합니다.