You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:48:55