Gibt es in Python eine kurze Möglichkeit, ein Listenverständnis mit mehreren Iteratoren zu verwenden?

7

Grundsätzlich möchte ich ein Listenverständnis über das "kartesische Produkt" zweier Iteratoren aufbauen. Denken Sie über den folgenden Haskell-Code nach:

%Vor%

was zu

führt %Vor%

Kann ich ein ähnliches Verhalten in Python auf präzise Weise erhalten?

    
Federico A. Ramponi 01.12.2008, 02:44
quelle

4 Antworten

14

Fragen Sie danach?

%Vor%     
S.Lott 01.12.2008, 02:58
quelle
7

Das kartesische Produkt befindet sich im Modul itertools (in 2.6).

%Vor%     
A. Coady 01.12.2008 03:40
quelle
4

Wissenswertes über das verschachtelte Verständnis: Es imitiert verschachtelte "for" -Schleifen, so dass die inneren Werte von äußeren verwenden können. Dies ist im kartesischen Produktfall nicht sinnvoll, aber gut zu wissen. Zum Beispiel:

%Vor%

erzeugt alle Paare (i,j) wo 0>=i>j>10 .

    
Rafał Dowgird 01.12.2008 09:12
quelle
2

Das scheint zu tun, was Sie beschreiben:

[[a, b] für einen Bereich (1,3) für b im Bereich (1,5)]

UPDATE: Drat! Sollte die Seite neu geladen haben, um S.Lott's Antwort vor dem Posten zu sehen. Hmmm ... was für einen kleinen Mehrwert zu tun? Vielleicht ein kurzer Hinweis auf die Nützlichkeit des interaktiven Modus mit Python.

Ich komme vor kurzem aus einem Hintergrund mit Perl. Bei solchen Problemen finde ich es sehr hilfreich, "python" an der Befehlszeile einzugeben und in den interaktiven Modus zu wechseln und a) Dinge auszuprobieren und b) Feinheiten zu verfeinern indem ich den Aufwärts-Pfeil drücke und meinen vorherigen Versuch anpasse, bis ich bekomme, was ich will. Jedes Mal, wenn ich bei einem Keyword nicht weiß, ist Hilfe verfügbar. Geben Sie einfach help ("some_keyword") ein, lesen Sie die kurze Zusammenfassung, drücken Sie "Q" und ich bin wieder in der direkten Konversation mit dem Python-Interpreter.

Empfohlen, wenn Sie ein Anfänger sind und es nicht benutzen.

    
dvergin 01.12.2008 03:03
quelle