>백엔드 개발 >파이썬 튜토리얼 >내 루프가 문자열에서 모든 모음을 제거하지 못하는 이유는 무엇입니까?

내 루프가 문자열에서 모든 모음을 제거하지 못하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-11 01:52:13759검색

Why Does My Loop Fail to Remove All Vowels From a String?

일부 항목을 제거하기 위해 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.