2012-06-16 3 views
7

E 'possibile assegnare ad una fetta lista in una sola volta, che sarebbe ottenere il seguente esempio:assegnazione di due variabili a una fetta lista

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

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

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

So che posso scrivere in questo modo:

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

ma mi stavo chiedendo se è possibile a questo in nessun altro modo. Oppure sono stati rovinati dal pattern matching di Haskell.

qualcosa come x,xs = mylist[:funky:slice:method:]

+6

Non usare 'list' come nome di variabile in Python. Comprimerai il built-in di 'lista()'! – dawg

+0

non farlo mai ... non ti preoccupare – beoliver

+4

Dovresti modificare la tua domanda per i grandi non lavati che potrebbero leggerlo. – dawg

risposta

11

È possibile in Python 3:

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

+1, ma solo P3K mi crede ... – dawg

+0

Naturalmente. per qualche motivo l'avevo usato solo su tuple. – beoliver

+0

Corretto - questo non funzionerà in Python 2.x. – senderle