@EnotShow

Почему программа удаляет объекты из списка не правильно?

Здравствуйте коллеги !
Начал изучать питон и задался следующим вопросом: "Как удалить из списка всё объекты кроме определенных ?". Набросал элегантное решения,
my_list = ['some word', 'some', 'leave', 1, None, 'leave', True, 'leave', 'else']
for i in my_list:
    if i != 'leave':
        my_list.remove(i)
print(my_list)

но после проверки оно не удаляет всё ненужно. Что бы удалить всё ненужное требуется 2 прохода. Почему это работает именно так и где я допустил ошибку ?

Вот что я получаю после первого прохода:
['some', 'leave', None, 'leave', 'leave']
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@dmshar
Во-первых, это не программа удаляет объекты неправильно, это вы написали такую программу, которая неправильно работает.
Во-вторых, никаких двух проходов не надо.
my_list = ['some word', 'some', 'leave', 1, None, 'leave', True, 'leave', 'else']
for i in my_list[::-1]:
    if i != 'leave':
        my_list.remove(i)
print(my_list)


Вот что на выходе:
['leave', 'leave', 'leave']

Обычно об этом говорят на первой-же лекции, посвященной работе со списками. Ну, или пишут в начале соответствующего параграфа в книгах.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы