Dunaevlad
@Dunaevlad

Почему удаляются не все объеты класса Int?

n = [['a', 'b', 'c'], 1, 2, ['d', 'e', 'f'], 3, 4]

for i in n:
    if type(i) is int:
        n.remove(i)
print(n)

На выходе получаем => [['a', 'b', 'c'], 2, ['d', 'e', 'f'], 4]
  • Вопрос задан
  • 58 просмотров
Решения вопроса 3
SoreMix
@SoreMix Куратор тега Python
yellow
Модифицировать список во время итерации по нему - плохая идея
Ответ написан
lxstvayne
@lxstvayne
Люблю Python
Функция filter вам нужна.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
['a', 1, 2, 'c']
После того как ты удалил 1, 2 встанет на его место. Но этот элемент уже был обработан, и цикл пойдёт дальше, к 'c'.
Если тебе нужно удалять элементы из списка в процессе итерации, итерируйся начиная с конца. Тогда будет меняться только позиция уже обработанных элементов.
И делай итерацию не напрямую по списку, а по индексу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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