def anti_vowel(text):
upper_vowels = ['A', 'E', 'I', 'O', 'U']
lower_vowels = ['a', 'e', 'i', 'o', 'u']
char_list = list(text)
for char in char_list:
if char in upper_vowels or char in lower_vowels:
char_list.remove(char)
new_word = ''
for char in char_list:
new_word += char
return new_word
如果通过anti_vowel("Hey look Words!")
,则得到结果'Hy lk Words!'
。'Words!'
中的'o'
未被移除。你知道吗
正如其他人所注意到的,您在迭代列表时正在修改它。这是行不通的:当您迭代时,列表会改变大小,导致您跳过一些字符。您可以使用列表副本来避免这种情况,但是可以考虑使用更好的方法。你知道吗
您可以逐个字符构建字符串,而不是:
这是更快,更安全,更短,更容易阅读比原来的方法。你知道吗
或者,您也可以使用Python强大的内置字符串函数来实现这一点:
这将文本推入一个删除所有元音的翻译表。容易的!你知道吗
这里发生的事情很少。你知道吗
list[:]
来创建一个简单的副本。你知道吗稍微简化一下代码:
如果要简化单个lambda下的所有内容,请使用以下命令:
您可以像调用正则函数
anti_vowel()
一样调用它。其背后的理念如下:[x for x in list]
)''.join([]
)相关问题 更多 >
编程相关推荐