Python: список — переверните массив на месте

9 класс 1 просмотр задан 27.05.2026 📚 редакторский

Дан список целых чисел arr. Напишите функцию, которая переворачивает список на месте (in-place), не создавая новый список. Двумя указателями.

1 ответ

Принятый ответ
Ответ

Меняем элементы i ↔ n-1-i

Как это получилось

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

def reverse_inplace(arr: list[int]) -> None:
    n = len(arr)
    left, right = 0, n - 1
    while left < right:
        arr[left], arr[right] = arr[right], arr[left]
        left += 1
        right -= 1

a = [1, 2, 3, 4, 5]
reverse_inplace(a)
print(a)  # [5, 4, 3, 2, 1]

В Python обмен реализуется одной строкой через распаковку кортежа: a, b = b, a.

Сложность: $O(n)$ по времени, $O(1)$ по памяти. Срез arr[::-1] создал бы новый список ($O(n)$ памяти). А list.reverse() — встроенный метод, делающий то же самое.

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти