ホームページ >バックエンド開発 >Python チュートリアル >私のループが文字列からすべての母音を削除できないのはなぜですか?

私のループが文字列からすべての母音を削除できないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-11 01:52:13759ブラウズ

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

一部の項目を削除するための「忘れる」ループ [重複]

このコードでは、すべての母音を削除する 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。