图书馆系统中列表推导式处理介词大小写例外的优化方法咨询
优化方案
核心优化思路
- 用小写集合存储例外介词,避免重复的大小写条目,同时集合的成员查找效率远高于列表(O(1) vs O(n))
- 统一将待判断的单词转为小写后匹配例外集合,无需维护多版本的介词
- 用生成器表达式替代列表推导式,减少内存占用(
join可以直接迭代生成器)
优化后的代码
# 仅存储小写例外介词,用集合提升查找效率 exception_preps = {"and", "or", "at", "in", "for"} self.book = " ".join( word.lower() if word.lower() in exception_preps else word.capitalize() for word in self.book.split() )
原代码的问题点
- 例外列表冗余:重复存储同一介词的多种大小写形式,既浪费空间又增加维护成本
- 列表查找效率低:每次判断都要遍历整个列表,当例外介词数量增多时,性能下降明显
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

