首页 > 解决方案 > 查找列表中最后出现的项目,不包括最后一个元素

问题描述

出于某种原因,这在尝试查找最后一个不包括最后一个元素的匹配项时不起作用

len(list) - 1 - list[::-1].index(1)

list = [3, 1, 1, 4, 1, 3, 1, 3, 1]

它需要找到index = 6

为单个列表迭代提供了正确答案。

编辑:

如何在具有相同索引的两个列表中找到最后一次出现数字 1 的索引?

list1 = [3, 1, 1, 4, 1, 3, 1, 3, 1]
list2 = [3, 1, 1, 4, 1, 3, 2, 3, 1]

答案应该是 index = 4

谢谢

标签: pythonpython-3.x

解决方案


我认为你需要:

如果你想忽略最后一个元素

lis = [3, 1, 1, 4, 1, 3, 1, 3, 1]

print([i for i,v in enumerate(lis[:-1]) if v==1][-1])
# 6

编辑

l1 = [3, 1, 1, 4, 1, 3, 1, 3, 1]
l2 = [3, 1, 1, 4, 1, 3, 2, 3, 1]

ls1 = [i for i,v in enumerate(l1[:-1]) if v==1]
ls2 = [i for i,v in enumerate(l2[:-1]) if v==1]

val = None
# select the list with higer length here
for i in ls1[::-1]:
    if i in ls2:
        val = i
        break
print(val)
# 4

推荐阅读