ホームページ >バックエンド開発 >Python チュートリアル >私のループが文字列からすべての母音を削除できないのはなぜですか?
一部の項目を削除するための「忘れる」ループ [重複]
このコードでは、すべての母音を削除する 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 中国語 Web サイトの他の関連記事を参照してください。