Удаление элементов списка по условию

Из списка чисел удалить элементы, значения которых больше 35 и меньше 65. При этом удаляемые числа сохранить в другом списке.

В Python с помощью инструкции del можно удалить элемент списка, указав сам список и индекс удаляемого элемента.

Алгоритм решения задачи выглядит простым. Достаточно перебрать элементы списка и удалить те, которые удовлетворяют условию. Однако при удалении элемента на его место становится следующий, но поскольку мы переходим к следующему элементу, то пропускаем проверку того, что стал на место удаленного. Цикл for использовать нельзя, т. к. меняется количество элементов списка.

Можно использовать цикл while, измеряя на каждой его итерации длину списка, индекс же увеличивать только в том случае, если удаления элемента не произошло.

import random
 
a = []
for i in range(20):
	n = round(random.random() * 100) # от 0 до 100 включительно
	a.append(n)
print("A =",a)
 
b = []
i = 0
while i < len(a):
	if 35 < a[i] < 65:
		b.append(a[i])
		del a[i]
	else:
		i += 1
print("A =",a)
print("B =",b)

Примеры выполнения программы:

A = [80, 35, 30, 98, 35, 4, 94, 51, 22, 22, 52, 97, 67, 90, 9, 1, 87, 78, 100, 29]
A = [80, 35, 30, 98, 35, 4, 94, 22, 22, 97, 67, 90, 9, 1, 87, 78, 100, 29]
B = [51, 52]
A = [68, 88, 64, 39, 13, 99, 6, 35, 50, 76, 47, 82, 76, 87, 44, 86, 75, 46, 8, 32]
A = [68, 88, 13, 99, 6, 35, 76, 82, 76, 87, 86, 75, 8, 32]
B = [64, 39, 50, 47, 44, 46]

Создано

Обновлено