Python:如何优化此代码以获得更好的性能



我用这段代码为字符串列表添加音节,我需要能够加快这段代码的速度以通过一些测试,有什么想法可以改进这段代码并使其更快吗?

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";次。第三种可能也被淘汰了,因为在我的情况下,它从未进入过这个分支。

最新更新