2012-12-12 11 views
6

Przykłady krojenia w documentation pokazują tylko liczby całkowite i zmienne używane jako indeksy, a nie bardziej złożone wyrażenia (na przykład myarray[x/3+2:x/2+3:2]). PEP-8 również nie obejmuje tej sprawy. Jakie jest zwykłe użycie białych znaków: myarray[x/3+2:x/2+3:2], myarray[x/3+2 : x/2+3 : 2] lub myarray[x/3+2: x/2+3: 2] (nie ma innych rozsądnych opcji)?Jaki jest zalecany odstęp w przypadku krojenia z użyciem indeksów wyrażenia w języku Python?

+4

Cóż, zwykle przestrzenie wokół moich operatorów i chciałbym brać w nawias złożonych wyrażeń: 'myarray [(x/3 + 2) :(x/2 + 3): 2] '. –

+1

PEP8 zaleca przestrzeń wokół operatorów matematycznych. –

Odpowiedz

7

Nigdy nie widziałem spacji używanych w operacjach krojenia, więc błądziłbym po stronie unikania ich. Z drugiej strony, jeśli nie jest to krytyczne z punktu widzenia wydajności, byłbym skłonny do przeniesienia wyrażeń poza samą operację dzielenia. Po tym wszystkim, twoim celem jest czytelność:

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

A jeśli to * jest * krytyczne pod względem wydajności, użyłbym zamiast tego Cythona. –

3

Uważam, że najbardziej odpowiedni wyciąg z PEP8 na ten temat:

Wytyczne, które tutaj mają na celu poprawę czytelność kodu i uczynić jest spójny w szerokim spektrum kodu Pythona.

W tym przypadku, mój osobisty wybór będzie prawdopodobnie albo Steve Mayne za odpowiedź, czy może:

myarray[slice(x/3 + 2, x/2 + 3, 2)] 
Powiązane problemy