Обменять элементы двух массивов на месте так, чтобы их новый контент также был обращен вспять

Это тестовая функция

exchange_with(a, b)
Test.assert_equals(a, ["c", "b", "a"])
Test.assert_equals(b,['7', '6', '5', '4', '3', '2', '1']

Дан вот такой пример:

# before

my_list = ['a', 'b', 'c']

other_list = [1, 2, 3]

exchange_with(my_list, other_list)

# after

my_list == [3, 2, 1]

other_list == ['c', 'b', 'a']

Задача написать функцию! Вот моё решение но тест на тестируемой системе не прохожу

a = ["1", "2", "3", "4", "5", "6", "7"]

b = ['a', 'b', 'c']

def exchange_with(a, b):
    a, b = b[::-1], a[::-1]
    return f"{a},\n {b}"

print(exchange_with(a, b))

Вот что выдаёт print()

['c', 'b', 'a']

['7', '6', '5', '4', '3', '2', '1']

Подскажите где моя ошибка. С уважением Андрей.


Ответы (2 шт):

Автор решения: Durtanyan

Попробуйте вот так:

a = ["1", "2", "3", "4", "5", "6", "7"]
b = ['a', 'b', 'c']

def exchange_with(a, b):
    a, b = b, a
    a.reverse()
    b.reverse()
    return a, b

c = exchange_with(a, b)

for i in c:
    print(i)

Но неплохо бы конечный ответ посмотреть. Что тест вернуть должен. Если Вам нужно развернуть именно срезом, то тогда в return, уберите запятую и после переноса уберите отступ.

→ Ссылка
Автор решения: Igor

Ваша ошибка в том, что снаружи функции exchange_with массивы a и b не изменились. Вам внутри функции надо менять содержимое существующих массивов a и b, а не присваивать этим переменным (параметрам) ссылки на новые массивы.

def exchange_with(a, b):
    tempA = a.copy()
    tempB = b.copy()
    a.clear()
    b.clear()
    # insert items from tempB into a in reverse order
    # insert items from tempA into b in reverse order
→ Ссылка