首頁 >後端開發 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn