在python中,如何从末尾删除某些项(直到某个索引)?

在python中,如何从末尾删除某些项(直到某个索引)?,python,list,loops,Python,List,Loops,假设有一个列表XYZ=['a'、'b'、'c'、'd'、'e']。现在我想使用循环从末尾删除最多'c'。如果有人有任何想法,请帮助。试试这个 >>> XYZ[:XYZ.index('c')] ['a', 'b'] # to keep 'c' # >>> XYZ[:XYZ.index('c')+1] # ['a', 'b', 'c'] 在这里,我们不删除。我们正在按要求对清单进行切片 要从列表中删除元素 >>> del XYZ[XYZ.ind

假设有一个列表<代码>XYZ=['a'、'b'、'c'、'd'、'e']。现在我想使用循环从末尾删除最多
'c'
。如果有人有任何想法,请帮助。

试试这个

>>> XYZ[:XYZ.index('c')]
['a', 'b']
# to keep 'c'
# >>> XYZ[:XYZ.index('c')+1]
# ['a', 'b', 'c']
在这里,我们不删除。我们正在按要求对清单进行切片

要从列表中删除元素

>>> del XYZ[XYZ.index('c')+1:]
>>> XYZ
['a', 'b', 'c']
编辑-1:

要处理@Austin comments提到的特殊情况, 对于列表
['a','b','c','a','c','d','e']

我们需要做如下所示的事情

>>> XYZ = ['a', 'b', 'c', 'a', 'c', 'd', 'e']
>>> XYZ.reverse()
>>> del XYZ[:XYZ.index('c')]
>>> XYZ.reverse()
>>> XYZ
['a', 'b', 'c', 'a', 'c']
试试这个

>>> XYZ[:XYZ.index('c')]
['a', 'b']
# to keep 'c'
# >>> XYZ[:XYZ.index('c')+1]
# ['a', 'b', 'c']
在这里,我们不删除。我们正在按要求对清单进行切片

要从列表中删除元素

>>> del XYZ[XYZ.index('c')+1:]
>>> XYZ
['a', 'b', 'c']
编辑-1:

要处理@Austin comments提到的特殊情况, 对于列表
['a','b','c','a','c','d','e']

我们需要做如下所示的事情

>>> XYZ = ['a', 'b', 'c', 'a', 'c', 'd', 'e']
>>> XYZ.reverse()
>>> del XYZ[:XYZ.index('c')]
>>> XYZ.reverse()
>>> XYZ
['a', 'b', 'c', 'a', 'c']

我将讨论一种
下一种
方法,它避免了另一个答案中的双重反转:

XYZ = ['a','b','c','d','c','e','g']

if 'c' in XYZ:
    XYZ = XYZ[:-next((i for i, x in enumerate(reversed(XYZ)) if x == 'c'))]

# ['a', 'b', 'c', 'd', 'c']

我将讨论一种
下一种
方法,它避免了另一个答案中的双重反转:

XYZ = ['a','b','c','d','c','e','g']

if 'c' in XYZ:
    XYZ = XYZ[:-next((i for i, x in enumerate(reversed(XYZ)) if x == 'c'))]

# ['a', 'b', 'c', 'd', 'c']

为什么使用循环
?这是家庭作业吗?实际上我想一次删除。您的列表是否包含重复的元素?为什么使用循环?这是家庭作业吗?实际上我想一次删除。您的列表是否包含重复的元素?因为这是一个列表切片,它与OP预期的输出不匹配。正如OP在我的评论中提到的,他想删除元素。我猜添加@JonCelements在我的评论中提到的
del
或重新初始化
XYZ
值将使此解决方案完成。因为这是一个列表切片,它与OP预期的输出不匹配。正如OP在我的评论中提到的,他想删除元素。我猜添加@JonCelements在我的评论中提到的
del
,或重新初始化
XYZ
值将使此解决方案完整。评论不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。