S. Обмен содержимым

Иногда нужно поменять содержимое двух списков местами так, чтобы ссылки на них остались прежними.
То есть объекты остаются теми же, а данные — полностью меняются.
Создайте функцию swap(a, b), которая принимает два списка и меняет их содержимое местами.
Результат должен быть виден во всех переменных, которые ссылаются на эти списки.ет один из всех переданных чисел.

Примечание

Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций.
В этой задаче отключены стандартные сортировки

Пример

Ввод

a = b = [1, 2]
c = d = [2, 1]
print(a, b, c, d)
swap(a, c)
print(a, b, c, d)

Вывод

[1, 2] [1, 2] [2, 1] [2, 1]
[2, 1] [2, 1] [1, 2] [1, 2]

Решение

Яндекс рекомендует использовать срезы, и с этой подсказкой задача становится слишком простой. Усложнить ее можно лишь, если вы не знаете, что можно написать такой срез – a[:]. Но если вы знаете, то все становится слишком просто.

Есть более “наивные” методы решения:
1) Методы copy(), clear(), extend()
2) Поэлементный обмен через цикл

Посмотреть код

Решение

Python
def swap(a, b):
    a[:], b[:] = b[:], a[:]

Решение

Python
def swap(a, b):
    temp = a.copy()
    a.clear()
    a.extend(b)
    b.clear()
    b.extend(temp)

Решение

Python
def swap(a, b):
    min_len = min(len(a), len(b))
    for i in range(min_len):
        a[i], b[i] = b[i], a[i]
    temp_a = a[min_len:].copy()
    temp_b = b[min_len:].copy()
    a[min_len:] = temp_b
    b[min_len:] = temp_a
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии