python-3.x 使用列表解析删除字符串中的所有元音

qrjkbowd  于 2022-12-05  发布在  Python
关注(0)|答案(3)|浏览(154)

我正在解决一个关于代码战的挑战。
巨魔正在攻击你的评论区!
处理这种情况的一个常见方法是删除巨魔评论中的所有元音,消除威胁。
您的任务是编写一个函数,该函数接受一个字符串并返回一个删除了所有元音的新字符串。
例如,字符串“这个网站是给失败者的LOL!”将变成“Ths wbst s fr lsrs LL!"。
注意:因为这个kata y不被认为是元音。
这是有效的:

def disemvowel(string):
    output = []
    for char in string:
        if char not in "aeiouAEIOU":
            output.extend(char)
    return "".join(output)

但是我想用一行的列表理解来完成它。我试过了:

return "".join([[].extend(char) for char in string if char not in "aeiouAEIOU"])

......但我越来越

TypeError: sequence item 0: expected str instance, NoneType found
dzhpxtsq

dzhpxtsq1#

你试图在你的列表理解中做一个列表;您可以只使用现有列表:

return "".join([char for char in x if char not in "aeiouAEIOU"])

注意,我们甚至可以省略列表解析,只使用一个生成器表达式(通过省略方括号),但是join()在内部是通过将序列转换为列表来工作的,所以在这种情况下,使用列表解析实际上更快。

blmhpbnm

blmhpbnm2#

def disemvowel(string_):
    vowels = 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'
    for a in vowels:
      string_ = string_.replace(a, '')
    return string_
nbnkbykc

nbnkbykc3#

我做了一个班轮,但我不知道这是正确的方式,虽然它是工作,并通过了所有的测试。任何指导是赞赏。谢谢。
def去元音(字符串_):

return string_.replace('a','').replace('e','').replace('i','').replace('o','').replace('u','').replace('A','').replace('E','').replace('I','').replace('O','').replace('U','')

相关问题