Используйте 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. Копия поверхностная, поэтому вложенные объекты оставались бы общими. Время построения и размер результата пропорциональны сумме длин двух списков.