Python实现打印最后一个最长字符串的问题求助
解决无法输出最后一个最长字符串的问题
原代码中max(somelist, key=len)会返回第一个长度达到最大值的字符串,这是因为当多个元素的len值相同时,max()函数会选择最先出现的元素。要输出最后一个最长字符串,可以用以下两种方法:
方法一:从后往前遍历找第一个匹配最长长度的元素
- 先计算列表中字符串的最长长度
- 从列表末尾开始遍历,找到第一个长度等于最长长度的字符串
修改后的代码:
somelist = [] while True: s = input() if s == "END": break somelist.append(s) # 计算最长字符串长度 max_length = max(len(elem) for elem in somelist) # 从后往前找第一个符合长度的字符串 for s in reversed(somelist): if len(s) == max_length: print(s) break
方法二:自定义max()的排序键
通过元组作为排序键,当长度相同时,优先选择索引更大的元素(即更靠后的元素)。利用enumerate获取每个元素的索引,将键设为(字符串长度, 索引),max()会优先比较长度,长度相同时比较索引,最终返回索引最大的最长字符串。
修改后的代码:
somelist = [] while True: s = input() if s == "END": break somelist.append(s) # 用enumerate绑定索引,键为(长度, 索引),取索引最大的最长元素 longest_string = max(enumerate(somelist), key=lambda x: (len(x[1]), x[0]))[1] print(longest_string)
测试你给出的示例输入:
banica
pizza
kiufte
END
两种方法都会输出kiufte,符合需求。
内容的提问来源于stack exchange,提问作者Александър Христов
相关产品推荐
相关产品推荐

