2012-12-12 2 views
6

Beispiele für Slicing in documentation zeigen nur ganzzahlige Literale und Variablen, die als Indizes verwendet werden, keine komplexeren Ausdrücke (z. B. myarray[x/3+2:x/2+3:2]). PEP-8 deckt diesen Fall ebenfalls nicht ab. Was ist die übliche Verwendung von Leerzeichen hier: myarray[x/3+2:x/2+3:2], myarray[x/3+2 : x/2+3 : 2] oder myarray[x/3+2: x/2+3: 2] (es scheint nicht andere sinnvolle Optionen zu sein)?Was ist der empfohlene Whitespace für das Slicen mit Expressionsindizes in Python?

+4

Nun, ich habe normalerweise Räume um meine Fahrer, und ich würde die komplexen Ausdrücke klammern: 'myarray [(x/3 + 2) :(x/2 + 3): 2] '. –

+1

PEP8 empfiehlt einen Bereich um mathematische Operatoren herum. –

Antwort

7

Ich habe nie gesehen, Leerzeichen in Slicing-Operationen verwendet, so würde irr auf der Seite zu vermeiden sie. Andererseits würde ich, wenn es nicht leistungskritisch ist, dazu neigen, die Ausdrücke außerhalb des Schneidevorgangs zu verschieben. Schließlich ist es Ihr Ziel Lesbarkeit:

lower = x/3 + 2 
upper = x/2 + 3 
myarray[lower:upper:2] 
+1

Und wenn es * leistungskritisch ist, würde ich stattdessen Cython dafür verwenden. –

3

glaube ich, das relevanteste Extrakt von PEP8 zu diesem Thema ist:

Die hier zur Verfügung gestellten Leitlinien sollen die Lesbarkeit des Codes zu verbessern und Es ist konsistent über das breite Spektrum von Python-Code.

In diesem Fall würde meine persönliche Wahl wahrscheinlich entweder Steve Mayne Antwort oder vielleicht sein:

myarray[slice(x/3 + 2, x/2 + 3, 2)] 
Verwandte Themen