Python编程:判断列表最后一个元素是否重复出现
解决列表最后一个元素重复检查的Python问题
首先得指出你当前代码里的几个关键问题哦:
- 循环只执行一次就直接返回结果:不管第一个元素是否等于最后一个,函数都会立刻
return,根本没机会检查后续元素,这完全不符合遍历检查的需求。 - 比较逻辑错误:
list1[-1:]返回的是包含最后一个元素的子列表,而list1[i]是单个元素,用is比较身份完全不合适,应该用==比较值,并且直接和list1[-1](单个元素)对比。 - 未处理空列表场景:当传入空列表时,你的函数不会返回任何值,违背了题目要求的直接返回False的规则。
修正后的代码方案
这里有两种简洁可靠的实现方式,都能完美满足需求:
方式一:利用内置统计方法(最直观)
先判断列表是否为空,然后统计最后一个元素在列表中的出现次数,只要次数大于1就返回True:
def go(list1): if not list1: # 处理空列表的情况 return False last_element = list1[-1] return list1.count(last_element) > 1
方式二:手动遍历检查(更灵活)
如果不想用内置的count方法,也可以手动遍历列表的前len(list1)-1个元素(跳过最后一个元素本身),只要找到一个和最后元素相同的就返回True,遍历结束都没找到就返回False:
def go(list1): if not list1: return False last_element = list1[-1] # 遍历除最后一个元素之外的所有元素 for elem in list1[:-1]: if elem == last_element: return True return False
测试验证
用你提供的测试用例验证效果:
print(go([-99,1,2,3,4,5,6,7,8,9,10,5])) # 最后一个元素5出现2次,输出True print(go([10,9,8,7,6,5,4,3,2,1,9])) # 最后一个元素9出现2次,输出True print(go([10,20,30,40,50,-11818,40,30,20,10])) # 最后一个元素10出现2次,输出True print(go([32767])) # 单个元素无重复,输出False print(go([])) # 空列表,输出False
这两种方式都能正确处理所有边界情况,你可以根据自己的习惯选择使用~
内容的提问来源于stack exchange,提问作者JenkinsMa
相关产品推荐
相关产品推荐

