Gibt es in Python ein Äquivalent von cons
? (jede Version über 2,5)
Wenn ja, ist es eingebaut? Oder brauche ich easy_install
bekomme ein Modul?
WARNUNG VORAUS: Das unten aufgeführte Material ist möglicherweise nicht praktisch!
Eigentlich muss cons
in Lisp nicht primitiv sein, Sie können es mit λ erstellen.
Siehe Verwendung von Lambda für Cons / Car / CDR-Definition in SICP für Details. In Python heißt es:
Nun sollte car(cons("a", "b"))
Ihnen 'a'
geben.
Wie ist das? Präfix Schema:)
Offensichtlich können Sie die Liste mit cdr
recursion aufbauen. Sie können nil
als leeres Paar in Python definieren.
Beachten Sie, dass Sie die Variable mithilfe von =
in Python binden müssen. Habe ich recht? Da es die Variable mutieren könnte, würde ich lieber eine konstante Funktion definieren.
Natürlich ist das nicht Pythonic, sondern Lispy, nicht so praktisch, aber elegant.
Übung: Implementieren Sie die Listenbibliothek Ссылка von Scheme in Python. Nur ein Scherz:)
Beachten Sie, dass Pythons Listen als Vektoren implementiert sind und nicht als verknüpfte Listen. Du könntest lst.insert(0, val)
machen, aber diese Operation ist O (n).
Wenn Sie eine Datenstruktur haben möchten, die sich eher wie eine verkettete Liste verhält, versuchen Sie es mit einem alberge 10.11.2011 01:26
Sie können ganz einfach eine Klasse definieren, die sich sehr ähnlich verhält wie cons
:
Allerdings wird dies eine sehr "schwere" Möglichkeit sein, grundlegende Datenstrukturen zu erstellen, für die Python nicht optimiert ist. Daher würde ich erwarten, dass die Ergebnisse viel mehr CPU / Speicher beanspruchen als etwas ähnliches in Lisp.