Как удалить некоторые элементы до определенного индекса с конца в Python? - PullRequest
0 голосов
/ 19 октября 2019

Скажите, что есть список. XYZ = ['a','b','c','d','e']. Теперь я хочу удалить до 'c' с конца, используя цикл. Пожалуйста, помогите, если у кого-нибудь есть идеи. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Я бы пошел о next подходе, который избегает двойного реверса, как в другом ответе:

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']
0 голосов
/ 19 октября 2019

Попробуйте,

>>> 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']

Edit-1:

Для работы с особым случаемкак уже упоминалось @Austin в комментариях, для списка ['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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...