Python Star-Entpacken für Version 2.7
Wie bereits erwähnt hierkönnen Sie die Sterne für das Auspacken einer unbekannten Anzahl von Variablen (wie bei Funktionen), aber nur in python 3:
>>> a, *b = (1, 2, 3)
>>> b
[2, 3]
>>> a, *b = (1,)
>>> b
[]
In python 2.7, die beste, die ich mit oben kommen kann ist (nicht so schlimm, aber ärgerlich):
c = (1, 2, 3)
a, b = c[0], c[1:] if len(c) > 1 else []
Gibt es eine Möglichkeit, importieren Sie diese aus __future__ wie die division, oder muss ich meine eigene Funktion zu tun unbekannt-Länge Auspacken in python 2.7?
InformationsquelleAutor der Frage beardc | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
in python 2.X, die Sie tun können:
solange
c
hat mindestens ein Mitglied, es wird funktionieren, weil wennc
hat nur 1 was in ihmc[1:]
ist[]
.Sollten Sie wahrscheinlich stellen Sie sicher, es gibt mindestens eine Sache, die in
c
obwohl, oder sonstc[0]
wird eine Ausnahme ausgelöst.Könnte man etwas machen wie:
InformationsquelleAutor der Antwort Andbdrew
ist auch eine option für die Behandlung des Falles, wo c eine leere Sequenz ist, obwohl es nicht die Unterscheidung zwischen [None] und [] in Bezug auf die Zuordnungen zu a, b. So verwenden Sie es mit Sorgfalt, der try /except ist wahrscheinlich am besten.
Können, sehe ich keinen wirklichen Unterschied zwischen Python 3 und 2.7 bei der Bearbeitung von leer-container, aber die nette Sache über Python 3 hier ist es funktioniert mit jedem durchsuchbar.
Funktioniert dies in 2.7 wenn Sie wissen, c ist ein generator.
Aber die volle Schönheit Auspacken zu verlangen scheint Python 3.
InformationsquelleAutor der Antwort Pete Cacioppi