我需要在字符串中的元音或空格后添加逗号,并将其附加到数组中。 我试过了,但没有给我想要的。 例如,如果我输入“a mambo jambo”,输出应该是['a','ma','mbo','ja','mbo']
这是我的代码:
text = input("Please enter text : ")
vowel = ["a", "e", "i", "o", "u"]
final_string = []
not_vowel = ""
a_vowel = ""
for text_in in text:
if text_in not in vowel:
not_vowel = text_in
if text_in in vowel:
a_vowel = text_in
final_string.append(f'{not_vowel}{a_vowel}')
print(final_string)
这是输入“a mambo jambo”后的输出:
['a', ' a', 'ma', 'ma', 'ma', 'ba', 'bo', ' o', 'jo', 'ja', 'ma', 'ba', 'bo']
我想要的是
['a', 'ma', 'mbo', 'ja', 'mbo']
虽然被接受的答案非常好,但我认为我应该使用
re
regex和列表理解,因为我相信它提供了一个更容易理解的解决方案这将为您提供:
@theherk对这一点的各种答案进行了计时,我想看看这是如何做到的可能会很有趣。我这样做的主要动机是,他们报告说我的答案是最慢的,而且差距很大。虽然我没想到会与regex一起“赢得”一场速度竞赛,但我很惊讶这会导致如此大的减速
(对我来说)好消息是,虽然我的答案仍然是最慢的,但它并不像报道的那么慢。我相信@theherk可能包括了
import re
的时间成本,这可能公平,也可能不公平如果要运行各种答案的timeit,请尝试:
对我来说,该报告的结果如下:
因此,我仍然是最慢的,但我认为,在优化性能增益可以忽略不计的部分之前,应该实现最容易理解的解决方案(可能不是我的)
虽然还远未达到最佳状态,但我希望它能有所帮助:
输出:
如果有效,别忘了接受答案
Peter Trcka提供了一个有趣的答案,但这里有另一种方法。这不一定更好,但可能更清楚
这是另一种方法。它稍微慢一点
对于后代,我将这两个Peter Trcka's answer和JonSG's answer转换为函数,并通过
timeit
运行它们。结果是:相关问题 更多 >
编程相关推荐