2015-01-10 3 views
0

Предположим, у меня есть,своп части списка в Python

a = [1,2,3,4,5] 

Я хочу поменять список сращивания на [: 2] с [-2:]. Так что a становится [4,5,3,1,2]

Есть ли способ для питонов?

EDIT1: После первого ответа, я попытался это,

>>> a = [1,2,3,4,5] 
>>> a[:2],a[-2:]=a[-2:][:2] 

Traceback (most recent call last): 
    File "<pyshell#28>", line 1, in <module> 
TypeError: can only assign an iterable 

Было исключение, whcih я получил.

ответ

5

Использование задания ломтика с кортежем распаковкой:

>>> a = [1,2,3,4,5] 
>>> a[:2], a[-2:] = a[-2:], a[:2] 
>>> a 
[4, 5, 3, 1, 2] 
+1

также, в то время как я согласен с @falsetru, что это вещий способ назначить ломтики, Python поощряет Вас быть легко читаемым, насколько это возможно. Если вещи не становятся уродливыми по размеру памяти или критичны по производительности, возможно, фактически происходит временная переменная * может быть более ясной, в зависимости от сложности вашей проблемы с обменом. В этом случае это решение проще всего читать, я думаю. –

+1

@MarcusMuller Какое у вас это предложение? – jamylak

+1

@ MarcusMüller, для меня введение временной переменной делает ее нечитаемой. – falsetru

Смежные вопросы