Gibt es eine pythonic way of packen Sie eine Liste in das erste element und den "Schwanz" in einem einzigen Befehl?
Beispiel:
>> head, tail = **some_magic applied to** [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>> head
1
>>> tail
[1, 2, 3, 5, 8, 13, 21, 34, 55]
InformationsquelleAutor der Frage Giacomo d'Antonio | 2012-05-10
Unter Python 3.x, Sie können dies tun, sehr schön:
Einer neuen Funktion in 3.x ist die Verwendung der
*
Betreiber beim Auspacken, alle zusätzlichen Werte. Es ist beschrieben in PEP 3132 - Extended Iterierbar Auspacken. Dies hat auch den Vorteil der Arbeit auf alle durchsuchbar, nicht nur Sequenzen.Es ist auch wirklich lesbar.
Wie beschrieben in der PEP, wenn Sie wollen, machen Sie das gleiche unter 2.x (ohne möglicherweise macht eine temporäre Liste), Sie haben, dies zu tun:
Natürlich, wenn Sie auf eine Liste, die einfachste Möglichkeit ohne die 3.x syntax:
InformationsquelleAutor der Antwort Gareth Latty
InformationsquelleAutor der Antwort fraxel
Für O(1) Komplexität der
head,tail
operation sollten Sie verwendendeque
jedoch.Folgende Weise:
Es ist nützlich, wenn müssen Sie durchläuft alle Elemente der Liste. Zum Beispiel in naive Zusammenführen von 2 Partitionen Zusammenführen, Sortieren.
InformationsquelleAutor der Antwort Nikolay Fominyh
Python-2, mit lambda
InformationsquelleAutor der Antwort BobIsNotMyName