✅ Решения

⚡ Кратко

Сначала сравните своё решение с идеей, а не с каждой строкой.

Если код отличается, проверьте поведение на тех же входных данных.

Решение считается хорошим, если оно понятно, проходит пример и не зависит от случайного порядка вывода.

Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.

Решение 1. Вложенная замена

nested_list = [10, [20, 30], [40, [50, 60]]]
nested_list[1][1] = "new"
print(nested_list)

Индексы [1][1] сначала выбирают список [20, 30], затем второй элемент внутри него.

Решение 2. Удаление имени

a = [1, 2, 3]
b = a
del a
print(b)

del a удаляет имя a. Список не удаляется, потому что имя b всё ещё ссылается на тот же объект.

Решение 3. Фильтрация элементов в группах

import copy

nested_list = [[10, 15, 20], [5, 25, 30], [35, 40, 80]]
deep_copy = copy.deepcopy(nested_list)

for row in deep_copy:
    average = sum(row) / len(row)
    for index in range(len(row) - 1, -1, -1):
        if row[index] < average:
            del row[index]

print("Исходный список:", nested_list)
print("Глубокая копия после изменений:", deep_copy)

Проход с конца не ломает индексы после удаления.