일부 항목을 제거하기 위해 "Forgets" 루프 [중복]
이 코드에서는 모든 모음을 제거하는 anti_vowel 함수를 만드는 것을 목표로 합니다. (aeiouAEIOU) 문자열에서. 올바르게 작동하는 것처럼 보이지만 샘플 텍스트 "Hey Look Words!"에 마지막 'o'가 남습니다. (결과: "Hy lk Words!").
문제 이해
이 문제는 반복 중인 목록을 수정하는 데서 발생합니다. 요소가 제거될 때마다 후속 요소의 색인이 변경되어 일부 요소를 건너뛰게 됩니다.
해결책: 목록 복사
이 문제를 해결하려면 복사본을 만드세요. 반복하기 전에 목록의 이렇게 하면 요소를 제거해도 다른 요소의 위치에 영향을 주지 않습니다.
for char in textlist[:]: #shallow copy of the list
대안: 목록 이해
목록 이해는 더 명확하고 직접적인 접근 방식을 제공합니다.
def remove_vowels(text): # function names should start with verbs! return ''.join(ch for ch in text if ch.lower() not in 'aeiou')
Python 문자열의 반복 가능한 특성을 활용하여 이는 독해는 모음을 제외한 새로운 문자열을 생성합니다.
위 내용은 내 루프가 문자열에서 모든 모음을 제거하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!