2012-06-16 12 views
7

¿Es posible asignar a una rebanada lista de una sola vez, que permita lograr los siguientes como:asignación de dos variables a una lista rebanada

mylist = [1,2,3,4,5,6,7] 

xs = mylist[:-1] 
x = mylist[-1] 

xs == [1,2,3,4,5,6] 
x == 7 

sé que puedo escribir así:

xs,x = mylist[:-1], mylist[-1] 

pero me preguntaba si es posible hacerlo de otra manera. O han sido mimados por la coincidencia de patrones de Haskell.

algo así como x,xs = mylist[:funky:slice:method:]

+6

No utilice 'list' como nombre de variable en Python. Va a destruir el constructor 'list()' incorporado! – dawg

+0

nunca lo hagas ... no te preocupes – beoliver

+4

Deberías editar tu pregunta para los grandes sucios que puedan leerla. – dawg

Respuesta

11

Usted puede en Python 3:

>>> *xs, x = [1, 2, 3, 4, 5, 6, 7] 
>>> xs 
[1, 2, 3, 4, 5, 6] 
>>> x 
7 
+0

+1, pero solo P3K me piensa ... – dawg

+0

Por supuesto. por alguna razón, solo había estado usando esto en tuplas. – beoliver

+0

Correcto: esto no funcionará en Python 2.x. – senderle

Cuestiones relacionadas