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

如何在列表中查找连续重复数字并集成至现有Python代码?

搞定连续重复数字的检测需求

嘿,我懂你的意思了——你现在的代码会把列表里所有出现过的重复数字都揪出来,但你要的是仅检测紧紧相邻的连续重复(比如[0,7,3,3,55]里的两个3),而不是像[0,7,3,5,3]这种分散的重复。那我们来修改一下判断逻辑就可以实现啦!

针对你的场景的修改方案

原来的if color in images[:-1]:会检查整个列表(除了最后一个元素)里有没有color,这就会把非连续的重复也包含进去。我们把它改成只对比当前color和列表的最后一个元素——毕竟连续重复的话,它俩肯定是相邻的嘛:

# 替换原来的if判断部分
if images and images[-1] == color:  # 先确保列表不为空,再检查最后一个元素是否和color相同
    print("Eşi bulundu", *cards[images.index(color)], "ile", *cards[len(images)-1])
    if i%2 == 0:
        esClick(*cards[images.index(color)])
        time.sleep(2)
        # esClick(*cards[len(images)-1])
        # time.sleep(2)
# 下面的列表操作保持原样就好
images.insert(images.index(color), 256)
images.pop(images.index(color))
images.pop()
images.append(256)
print(images)

为什么这么改?

  • images先做判断:避免列表为空的时候取images[-1]报错
  • images[-1] == color:直接锁定当前color和它的前一个相邻元素(也就是列表最后一个元素),只有当它俩相等时,才是你要找的连续重复,完美过滤掉分散的重复情况

如果需要检测列表中所有连续重复段

要是你的场景不止是检测新加入的color,而是要扫描整个列表找所有连续重复的数字,那可以写个小辅助函数:

def find_consecutive_duplicates(lst):
    # 遍历列表,检查每一对相邻元素
    for idx in range(len(lst) - 1):
        if lst[idx] == lst[idx + 1]:
            return True, lst[idx], idx  # 返回:是否有重复、重复数字、重复起始索引
    return False, None, None

# 用法示例
has_dupe, dupe_num, dupe_idx = find_consecutive_duplicates(images)
if has_dupe:
    print(f"找到连续重复数字:{dupe_num},起始位置在索引{dupe_idx}")
    # 这里可以加你对应的处理逻辑

这个函数能帮你找出列表里所有相邻的连续重复数字,按需使用就好~

内容的提问来源于stack exchange,提问作者mGungorr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:54:47