【发布时间】:2014-06-04 06:06:53
【问题描述】:
我试图在标题中尽可能清楚,但很难简单地解释它。我必须从某个字符串中删除所有元音;为此,我创建了一个循环,该循环遍历由该字符串的字符组成的列表,删除元音,然后加入它们:
def anti_vowel(text):
vow = ["a", "e", "i", "o", "u"]
chars = []
for i in text:
chars.append(i)
for i in chars:
if i.lower() in vow:
chars.remove(i)
return "".join(chars)
问题是当我运行代码时,总会有一个元音不会被删除。例子:
>>> anti_vowel("Hey look Words!")
Hy lk Words!
>>> anti_vowel("Frustration is real")
Frstrton s ral
我绝不是 Python 方面的专家,但这令人困惑。为什么它会删除一些字母而保留其他字母,即使它们完全相同?
【问题讨论】:
-
见this。
-
我知道循环遍历一个列表并从同一个列表中删除元素是不好的。您可以复制
copylist = origlist[:],但还有其他方法可以做您想做的事情 -
要从字符串中删除元音,你可以使用类似的东西:
text.translate({ord(v):'' for v in 'aeiouAEIOU'})。由于您不是在寻求解决方法,因此我将其留在这里作为评论。
标签: python python-2.7