Задать вопрос
@Art0005

Почему работает некорректно?

a='a abc ccc cvv v'
b=a.split()
c=[]

for i in b:
    if len(i)>=3 and len(i)<=5:
        c.append(i)
        b.remove(i)

Почему мне возвращает [a,ccc,v] и в c тоже без ccc
Смотрю через дебаг а for просто перепрыгивает через ccc и даже не берет в i ее, не понимаю почему так
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
@dmshar
Если надо "находить и удалять" одновременно, то делать это МОЖНО только с конца списка

a='a abc ccc cvv v'
b=a.split()
c=[]
for i in b[::-1]:
    if len(i)>=3 and len(i)<=5:
        c.append(i)
        b.remove(i)
print ( c)
print (b)

Результат
['cvv', 'ccc', 'abc']
['a', 'v']


Если очень хочется - потом можно сделать реверс

c.reverse()
print ( c)


['cvv', 'ccc', 'abc']
Ответ написан
Комментировать
@anerev
for i in b[:]:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Stqs
senior software developer
модифицировать список во время итерации по нему - такая себе идея...
Ответ написан
Комментировать
@Art0005 Автор вопроса
Попробовал через range, но то же самое выходит
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы