首页 >后端开发 >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