Задать вопрос
@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, но то же самое выходит
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 09:18
5500 руб./за проект
18 янв. 2025, в 07:20
50000 руб./за проект
18 янв. 2025, в 03:12
1000 руб./за проект