переупорядочение списка на основе определенного заказа - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу изменить порядок списка с длиной n, где n может быть любым целым числом от 5 до 20.

пример списка = [1,2,3,4,5,6]

для каждого из моих сгенерированных списков, я хочу переместить последний, но один элемент [-2] в начало списка [0] так, чтобы конечный порядок стал:

new_list = [5,1,2,3,4,6]

Я пробовал:

myorder =[1,2,3,4,5,6]


new_order = [(myorder[-2]), [i for i in myorder[:-2]], (myorder[-1])]

, но это дает мне список в списке:

[5, [1, 2, 3, 4], 6]

Есть ли простой способ сделать это для понимания списка?

Ответы [ 4 ]

0 голосов
/ 12 декабря 2018

Я думаю, что это самый общий способ сделать это:

example_list.insert(0, example_list.pop(-2))

Вы удаляете (поп) элемент -2 и вставляете его в положение 0.

0 голосов
/ 12 декабря 2018

Вы можете использовать нарезку списка.

Пример:

l = [1,2,3,4,5,6]
print([l[-2]] + l[:-2] + l[-1:])

Выход:

[5, 1, 2, 3, 4, 6]
0 голосов
/ 12 декабря 2018

Что по этому поводу:

>>> lst = [1, 2, 3, 4, 5, 6]
>>> lst = [lst[-2]] + lst[:-2] + [lst[-1]]
>>> lst
[5, 1, 2, 3, 4, 6]
0 голосов
/ 12 декабря 2018

Вы можете попробовать это:

new_order = [myorder[-2]] + [i for i in myorder[:-2]] + [myorder[-1]]

Или, немного упрощая,

new_order = [myorder[-2]] + myorder[:-2] + [myorder[-1]]
...