Python提取数组中最长单词的代码运行异常,占用大量内存无正确输出
代码问题排查及修复
核心问题点
- 内存溢出原因:内层
for word2 in longest循环遍历longest数组的同时,不断向数组追加元素,数组长度无限增长导致循环永远无法终止,最终占用大量内存。该内层循环本身是冗余设计,longest中存储的所有单词长度一致,无需遍历即可对比长度。 - 输出错误:最终打印的是
longest_word函数对象,而非存储结果的longest数组,无法得到预期输出。 - 逻辑缺陷:初始
longest设为[""]没有必要,通过单独记录当前最大长度的方式逻辑更清晰,也不会出现空字符串干扰的问题。
修复后代码
words = ["Good", "Bad", "Cool"] def longest_word(): longest = [] max_length = 0 for word in words: word_len = len(word) # 遇到更长的单词,清空原有结果更新最大长度 if word_len > max_length: max_length = word_len longest.clear() longest.append(word) # 长度和当前最大相等,直接加入结果 elif word_len == max_length: longest.append(word) print(longest) longest_word()
运行后输出为['Good', 'Cool'],符合预期。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

