Перегруппируйте список на месте, изменив исходный список, поместив значения четного индекса впереди
Я относительно новичок в Python, и я все еще пытаюсь выучить основы языка. Я наткнулся на вопрос, который просит вас изменить список, изменив оригинал. Что вы должны сделать, это переместить все четные значения индекса вперед (в обратном порядке), за которыми следуют нечетные значения индекса.
Пример:
l = [0, 1, 2, 3, 4, 5, 6]
l = [6, 4, 2, 0, 1, 3, 5]
Мой первоначальный подход состоял в том, чтобы просто использовать следующее:
l = l[::-2] + l[1::2]
Тем не менее, очевидно, что это считается "созданием нового списка", а не циклическим просмотром исходного списка для его изменения.
Таким образом, я надеялся получить некоторые идеи или подсказки о том, как мне следует подойти к этому конкретному вопросу. Я знаю, что могу использовать цикл for или цикл while для циклического перемещения по элементам / индексу, но я не знаю, как сделать обмен или что-либо еще в этом отношении.
1 ответ
Вы можете сделать это, назначив фрагмент списка вместо переменной:
l[:] = l[::2][::-1] + l[1::2]
Ваше выражение для перевернутых четных элементов также было неверным. использование l[::2]
чтобы получить все четные числа, затем поверните это с [::-1]
,
Это фактически эквивалентно:
templ = l[::2][::-1] + l[1::2]
for i in range(len(l)):
l[i] = templ[i]
for
Цикл изменяет исходный список на месте.