如何生产
hegellogo wogorld
来自hello world
,具有列表理解能力?
我的尝试未完成如下。
["g"+x for x in "hello world" if (x=="a" or x=="i" or x=="u" or x=="e" or x=="o")]
它产生["ge","go","go"]
而不是hegellogo wogorld
注意:我只对列表理解方法感兴趣。
答案 0 :(得分:3)
理解中的if子句正在对其进行过滤。相反,我们希望了解每个字符是否为元音的三元数。我们还需要将生成的字符重新组合在一起。
phrase = "hello world"
vowels = "aeiou"
''.join(char + "g" + char if char in vowels else char for char in phrase)
答案 1 :(得分:2)
对于每个字符ch
,您希望结果包括ch + 'g' + ch
(如果ch
是元音),否则只需ch
。您可以将其表示为
(ch + 'g' + ch) if ch in "aeiou" else ch
所以您需要类似的东西:
''.join([(ch + 'g' + ch) if ch in "aeiou" else ch for ch in "hello world"])
答案 2 :(得分:1)
您的代码对我来说还不错。缺少其他部分,这就是导致意外标准输出的原因。
x = "hello world"
y = "".join(["g"+a if a in ['a','e','i','o','u'] else a for a in x])
y
--> 'hgellgo wgorld'