Перегруппируйте список на месте, изменив исходный список, поместив значения четного индекса впереди - PullRequest
0 голосов
/ 08 мая 2018

Я относительно новичок в 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 Ответ

0 голосов
/ 08 мая 2018

Вы можете сделать это, назначив фрагмент списка вместо переменной:

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 изменяет исходный список на месте.

...