编写Pig Latin转换器最高效的方法是什么?如何精简现有实现代码?
Pig Latin转换器精简优化方案
核心优化思路
- 砍掉冗余中间变量:原代码中拆分后的单词列表、临时存储结果的
pig_sentence列表都不需要单独声明赋值,逻辑直接嵌套合并 - 简化分支写法:单条件的if-else判断用Python三元表达式压缩为单行,省去冗余的变量赋值和append调用
- 优化元音判断写法:用字符串
'aeiou'代替列表存储元音集合,写法更短,in操作的执行效率完全一致 - 用生成器对接join方法:
str.join()支持直接传入可迭代的生成器对象,不需要先把所有转换结果存入列表,同时减少代码量和内存开销
最终精简代码(和原实现逻辑完全一致)
print(' '.join(word + 'yay' if word[0] in 'aeiou' else word[1:] + word[0] + 'ay' for word in input('Enter String: ').lower().strip().split()))
优化效果说明
- 代码行数从原有的11行压缩到1行,体积缩小80%以上
- 执行效率高于原实现:没有多余的变量赋值、列表追加操作,生成器逐词处理不需要预存全量转换结果,长文本输入下内存占用更低
- 逻辑完全对齐原实现:保留了输入转小写、去除首尾空白、按空格拆分单词的所有原有处理逻辑,转换结果和原代码没有差异
内容的提问来源于stack exchange,提问作者571Fanatic
相关产品推荐
相关产品推荐

