python - 获取列表中相似连续元素的索引(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 循环检查每个元素的情况下确定列表中相似连续元素的索引?有没有更优雅的方法来解决问题?
解决方案
您也可以使用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]
推荐阅读
- syntax-highlighting - 由于与 Bulma 冲突,PrismJS 语法高亮被破坏
- html - 如何获得带有圆圈和线条的面包屑?
- python - 如何设置我的 QTreeWidget 默认展开?
- ruby - --with-cflags="-Wno-error=implicit-function-declaration" 有什么作用?
- tensorflow - 函数逆张量流
- unity3d - (Unity) 我无法在 GameManager 中拖动 UI 组件
- spring-boot - 使用 EmbeddedKafka 进行集成测试:ContainerTestUtil.waitForAssignment throws Expected 1 but got 0 partitions
- python - 从调用 pyinstaller 的 cronjob 运行 bash 脚本编译 python 模块未打开托盘图标
- active-directory - 如何通过域 netbios 名称和用户登录名搜索 LDAP 全局目录
- html - 如何使用 HTML 和 CSS 管理树形卡片盒设计?