循環「忘記」刪除某些項目[重複]
在此程式碼中,我們的目標是建立一個消除所有元音的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中文網其他相關文章!