Удаление элементов из списка по условию. Как это работает?

Имеется кусок кода, который должен удалять все элементы из списка, которые меньше 5. Однако этот код работает не верно. Можете ли вы без или с использованием консоли указать где ошибка и как нужно делать.

nums = [1,2,5,10,3,100,9,24]
for i in nums:
    if i < 5:
        nums.remove(i)
nums

>>>[2, 5, 10, 100, 9, 24]

Проверяет ли этот код на то, что элемент по своему значению менешь 5? В первой итерации 1 конечно меньше 5. Затем программа удаляет единицу, но в тоже время путаются индексы. На второй итерации она проверяет уже 5 а не 2. От этого и ошибка.

Для решения этой задачи можно использовать несколько вариантов.

Первый: создать пустой массив и дописывать в него, а именно:

nums = [1,2,5,10,3,100,9,24]
newnums = []
for i in nums:
    if i >= 5:
        newnums.append(i)
newnums

>>>[5, 10, 100, 9, 24]

Второй: Используя list comprehension

nums = [1,2,5,10,3,100,9,24]
newnums = [i for i in nums if i>=5]
newnums

>>>[5, 10, 100, 9, 24]

Нам нравится больше спосом с list comprehension. Но решать всегда вам.

python logo

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

×