首页 > 解决方案 > 获取列表中相似连续元素的索引(Python3)

问题描述

我正在尝试创建一个函数,该函数返回列表中 3 个相似的连续元素的索引。对于列表 [1,2,3,3,3,4,5],输出应该是 myFunc([1,2,3,3,3,4,5]) ---> 2 (或 [2] )。

以下代码完成了这项工作:

def myFunc(a):
    lst = []
    for i in range(len(a)-2):
        if a[i]==a[i+1]==a[i+2]:
            lst.append(i)
    return lst

...但是检查大列表中的每个元素非常耗时。

编码:

def myFunc(a):
    return any(a[i]==a[i+1]==a[i+2] for i in range(len(a)-2))

...似乎对这个问题很有用,但我不确定是否有办法从中获取相似连续元素的索引(返回 True 或 False)

我的问题: 有没有办法在不使用 for 循环检查每个元素的情况下确定列表中相似连续元素的索引?有没有更优雅的方法来解决问题?

标签: pythonpython-3.xlist

解决方案


您也可以使用filter函数在纯 Python 中执行此操作:

inList = [1,2,3,3,3,4,5]

def showIndices(inList):
    return list(filter(lambda i: inList[i] == inList[i+1] == inList[i+2], range(len(inList)-2)))

indices = showIndices(inList)
print(indices)

输出:

[2]

推荐阅读