Python: Elegante und effiziente Möglichkeiten, eine Liste zu maskieren

8

Beispiel:

%Vor%

und die Ergebnisse sind:

%Vor%

Wie Sie sehen, ist das Maskieren von Arrays im Vergleich zur Liste eleganter. Wenn Sie versuchen, das Array-Maskierungsschema in der Liste zu verwenden, erhalten Sie einen Fehler:

%Vor%

Die Frage ist, eine elegante Maskierung für list s zu finden.

Updates:
Die Antwort von jamylak wurde akzeptiert, um compress einzuführen, aber die von Joel Cornett genannten Punkte machten die Lösung zu einer gewünschten Form meines Interesses.

%Vor%     
Developer 23.04.2012, 04:25
quelle

3 Antworten

19

Sie suchen itertools.compress

Beispiel aus der Dokumentation

Entspricht:

%Vor%     
jamylak 23.04.2012, 04:28
quelle
5

Da jamylak die Frage bereits mit einer praktischen Antwort beantwortet hat, hier ist mein Beispiel einer Liste mit eingebauter Maskierungsunterstützung (völlig unnötig, btw):

%Vor%

Verwendung:

%Vor%

Beachten Sie, dass compress stoppt, wenn entweder die Daten oder die Maske aufgebraucht ist. Wenn Sie den Teil der Liste, der über die Länge der Maske hinausgeht, beibehalten möchten, können Sie Folgendes versuchen:

%Vor%     
Joel Cornett 23.04.2012 04:54
quelle
3

Ich halte es nicht für elegant. Es ist kompakt, aber eher verwirrend, da das Konstrukt sich sehr von den meisten Sprachen unterscheidet.

Wie Rossum über Sprachdesign gesagt hat, verbringen wir mehr Zeit damit, es zu lesen als es zu schreiben. Je unklarer die Konstruktion einer Codezeile ist, desto verwirrender wird sie für andere, denen Python möglicherweise nicht vertraut ist, obwohl sie in einer ganzen Reihe anderer Sprachen die volle Kompetenz besitzen.

Lesbarkeit trotzt jeden Tag in der realen Welt des Service-Codes. Genau wie dein Auto reparieren. Große Zeichnungen mit vielen Informationen erleichtern die Fehlersuche erheblich.

Für mich würde ich lieber den Code von jemandem untersuchen, der das lange Formular verwendet

%Vor%

als die numme kurze Notationsmaske. Ich brauche keine speziellen Kenntnisse über ein bestimmtes Python-Paket, um es zu interpretieren.

    
Jim 03.12.2015 23:57
quelle

Tags und Links