Конкатенация списков и обратный срез без изменения входа

Используйте c = a + ['a'] + b[::-1] или распаковку [*a, 'a', *reversed(b)]. Получится [1, 2, 3, 'a', 4, 5, 6], исходные списки не изменятся.

Короткий ответ

Что ответить на собеседовании

Используйте c = a + ['a'] + b[::-1] или распаковку [*a, 'a', *reversed(b)]. Получится [1, 2, 3, 'a', 4, 5, 6], исходные списки не изменятся.

Подробный разбор

Ответ с пояснениями

Условие

Есть 2 списка a = [1, 2, 3] b = [6, 5, 4] требуется собрать итоговый список, содержащий все элементы первого, символ "a" и все элементы второго в обратном порядке

Ответ

Используйте c = a + ['a'] + b[::-1] или распаковку [*a, 'a', *reversed(b)]. Получится [1, 2, 3, 'a', 4, 5, 6], исходные списки не изменятся.

Пример:

a = [1, 2, 3]
b = [6, 5, 4]
c = [*a, "a", *reversed(b)]

reversed(b) создаёт обратный итератор, который распаковка добавляет в новый список. Метод b.reverse() работает иначе: меняет b на месте и возвращает None. Копия поверхностная, поэтому вложенные объекты оставались бы общими. Время построения и размер результата пропорциональны сумме длин двух списков.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее