我用这段代码为字符串列表添加音节,我需要能够加快这段代码的速度以通过一些测试,有什么想法可以改进这段代码并使其更快吗?
def separate(word):
s = ""
L = []
voc = ['a','e','i','o','u','y','j']
for letter in word:
if len(s) < 1:
s += letter
elif s[len(s) - 1] not in voc:
s += letter
elif s.startswith('aeiouyj'):
s +=letter
elif letter in voc:
s += letter
else:
L.append(s)
s = letter
L.append(s)
return L
做了一些小的杂项调整。
def separate(word):
s=''
L = []
for letter in word:
if s=='':
s = letter
elif s[-1] not in 'aeiouyj' or letter in 'aeiouyj':
s += letter
else:
L.append(s)
s = letter
L.append(s)
return L
不确定s.startswith('aeiouyj')
在原始代码中是否有用,因为它永远不会是True
。
def separate(word):
s = ""
L = []
voc = ['a','e','i','o','u','y','j']
s=word[0]
for letter in word[1:]:
if s[len(s) - 1] not in voc:
s += letter
elif letter in voc or s.startswith('aeiouyj'):
s +=letter
else:
L.append(s)
s = letter
L.append(s)
return L
在分析了代码之后,我们可以看到它是第一个进入的,如果只是在一开始的话。所以,我们可以跳过这部分。还有一件事你可以做,那就是把if放在倒数第二位。在用这个程序分析哈利波特的段落之后,它进入循环";12436,0,98959";次。第三种可能也被淘汰了,因为在我的情况下,它从未进入过这个分支。