-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
lab8 get_cleaned_english_sentence 질문
19.05.29 20:12 작성 조회수 92
0
get_cleaned_english_sentence 함수 작성 중에 있습니다.
input_list = list(raw_english_sentence)
input_list2 = input_list
for i in input_list:
if i == '.' or i == ',' or i =='!' or i == '?':
input_list.remove(i)
while input_list[0] == ' ':
del input_list[0]
while input_list[-1] == ' ':
del input_list[-1]
result = ''.join(input_list)
return result
이와 같이 코드를 작성했을 경우 특수문자가 붙어있을 때 일부 지워지지 않는 현상을 발견했습니다.
예를 들어 abc.,?! 를 입력했을 때 나오는 결과가 abc,! 인 것입니다.
아마 C에서와 같이 list의 인덱스는 유지되고, Value가 앞으로 당겨지기 때문이라고 생각했습니다.
일단 제가 생각하는게 맞는 것인지 궁금합니다.
그리고 이를 해결하기 위해
input_list = list(raw_english_sentence)
input_list2 = input_list
for i in input_list[:]:
if i == '.' or i == ',' or i =='!' or i == '?':
input_list.remove(i)
while input_list[0] == ' ':
del input_list[0]
while input_list[-1] == ' ':
del input_list[-1]
result = ''.join(input_list)
return result
와 같이 for문에 있는 input_list를 input_list[:] 로 고쳤더니 정상적으로 abc가 나오는 것을 확인했습니다.
허나 그 이유를 모르겠습니다. 즉, 문제는 해결했으나 해결된 이유를 모릅니다.
그 이유에 대해 알려주셨으면 합니다.
답변을 작성해보세요.
0
TeamLab
지식공유자2019.06.02
While 문 중간에 del을 쓰게 되면 중간중간 값이 지워지면서 while 문이 원하는데로 돌아가지 않습니다. 이점 유의하셔서 다시 작성하면 될거 같습니다.
답변 1