删除超过最后一个索引“的所有值的Python方法”;x";在Python列表中

删除超过最后一个索引“的所有值的Python方法”;x";在Python列表中,python,python-3.x,Python,Python 3.x,我搜索了一个类似的主题,因为我想一定有人以前遇到过这个问题。欢迎提供相关主题的链接:) 我想删除超过(包括)最后一个索引“x”的所有值 给定列表:a=[0,1,2,3,4,5,0,1,2,3,4,5] 做点什么,例如,dela[a.rindex(2):] 最后的结果是a==[0,1,2,3,4,5,0,1]-请注意,2已被删除我已设法删除,因此您可能需要: >>> a = [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5] >>> las

我搜索了一个类似的主题,因为我想一定有人以前遇到过这个问题。欢迎提供相关主题的链接:)

我想删除超过(包括)最后一个索引“x”的所有值

给定列表:
a=[0,1,2,3,4,5,0,1,2,3,4,5]

做点什么,例如,
dela[a.rindex(2):]


最后的结果是
a==[0,1,2,3,4,5,0,1]
-请注意,2已被删除

我已设法删除,因此您可能需要:

>>> a = [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
>>> last = len(a) - a[::-1].index(2) - 1
>>> last
8
>>> a[:last]
[0, 1, 2, 3, 4, 5, 0, 1]
基于

编辑

或者,如果节省内存是一个问题,您可以迭代列表并逐个元素弹出。这将更加耗时,但占用的内存更少

>>> a = [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
>>> a
[0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
>>> while a[-1] != 2:
...   a.pop()
... 
5
4
3
>>> a
[0, 1, 2, 3, 4, 5, 0, 1, 2]
>>> a.pop()
2
>>> a
[0, 1, 2, 3, 4, 5, 0, 1]

Python中没有
rindex
,index返回
第一次出现的索引

使用
len(a)-a[::-1]。索引(2)
(从末尾开始的第一次出现是最后一次出现)将返回
2的最后一次出现的索引,因此我们可以使用切片:

li = [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
element = 2
last_index = len(li) - li[::-1].index(element)
li = li[:last_index - 1]
print(li)
# [0, 1, 2, 3, 4, 5, 0, 1]
请注意,这种方法在性能部门不是最好的,因为它需要在内存中创建一个列表,然后将其反转

def last_index(a,target):
    for i in a:
        check = a[-1]
        a.pop()
        if check == target :
            break
    return a
编辑 多亏了这些评论,这可以变得更简单,如下所示:

def last_index(a,target):
    while a.pop() != target : pass
    return a
这应提供:
[1,2,4,2,3,4,5]

要删除列表表单中找到给定值的所有项目吗?我想在给定值最后一次出现后删除列表中的所有值非常好。只是一个小小的建议:
对于a:
中的uu将更具pythonic:1。循环中未使用的变量通常称为
,2。无需创建一个新的
range
对象(在Python 3中)或一个新列表(在Python 2中),
range(len(a))
就是这样做的。函数名
last\u index
表明它将只返回索引,而实际上它也在修改原始列表。我最终使用了它,但不是作为函数。如果a[-1]==0:
中断
,则在a:
a.pop()
中为uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubreaks@DeepSpace谢谢,我也在努力使我的代码更具Python风格,你的评论真的帮了我大忙!当我需要当前项的索引时,我通常使用len(range(list)),但我想在这种情况下这不是必需的。@Mike@DeepSpace,您可以组合
a.pop();check=a[-1]
您不能吗<代码>检查=a.pop();同时检查!=目标:;选中=a.pop()
,它也会删除目标。
a = [1,2,4,2,3,4,5,2,3]

def delete_last_index(list,n):
  index = len(a) - 1 - a[::-1].index(n)
  return list[:index]

a = delete_last_index(a,2)
print(a)