A = [5, -6, 2, -1, -4, -5, 8, 7, -3]
neg_numbers = []
for k in range(len(A) - 1, -1, -1):
if A[k] < 0:
neg_numbers.append(A[k])
print(neg_numbers)
Вот подробное решение и разбор кода.
Что делает программа
- Дано A = [5, -6, 2, -1, -4, -5, 8, 7, -3].
- neg_numbers начинается как пустой список.
- Цикл for k in range(len(A) - 1, -1, -1): идёт по индексам элемента A от последнего к первому.
- Если A[k] < 0 (число отрицательное), то это значение добавляется в neg_numbers.
- В конце печатается neg_numbers.
Пошаговый разбор выполнения
1) Исходные данные:
A = [5, -6, 2, -1, -4, -5, 8, 7, -3]
neg_numbers = []
2) Итерации цикла (индексы от 8 до 0):
- k = 8: A[8] = -3 -> отрицательное -> neg_numbers = [-3]
- k = 7: A[7] = 7 -> не отрицательное -> neg_numbers остается [-3]
- k = 6: A[6] = 8 -> не отрицательное -> neg_numbers остается [-3]
- k = 5: A[5] = -5 -> отрицательное -> neg_numbers = [-3, -5]
- k = 4: A[4] = -4 -> отрицательное -> neg_numbers = [-3, -5, -4]
- k = 3: A[3] = -1 -> отрицательное -> neg_numbers = [-3, -5, -4, -1]
- k = 2: A[2] = 2 -> не отрицательное -> neg_numbers остается [-3, -5, -4, -1]
- k = 1: A[1] = -6 -> отрицательное -> neg_numbers = [-3, -5, -4, -1, -6]
- k = 0: A[0] = 5 -> не отрицательное -> neg_numbers остается [-3, -5, -4, -1, -6]
3) Вывод результата:
print(neg_numbers) печатает: [-3, -5, -4, -1, -6]
Итоговый результат
- neg_numbers = [-3, -5, -4, -1, -6]
- Вывод: [-3, -5, -4, -1, -6]
Замечания и альтернативы
- В текущем коде отрицательные числа собираются в порядке обхода с конца списка, поэтому итоговый порядок отрицательных чисел обратный их появлению в A.
- Если нужно сохранить исходный порядок отрицательных чисел, можно:
- пройти по списку вперед и собирать negatives: neg_numbers = [x for x in A if x < 0]
- или после цикла обратить список: neg_numbers.reverse()
- Временная сложность: O(n), где n — длина A.
- Пространственная сложность: O(m), где m — количество отрицательных элементов (в худшем случае O(n)).
Если нужно, могу показать варианты реализации в разных стилях или адаптировать под конкретный класс/уровень сложности.