5.3.3 Fette

Una fetta seleziona un intervallo di elementi in una sequenza (per esempio, una stringa, una tupla o una lista). L'affettamento può essere usato come un'espressione o come identificativo in istruzioni di assegnamento o cancellazione. La sintassi per un'affettamento è:

Potete scaricare il file originale (in Inglese) come testo.

C'è ambiguità nella sintassi formale: tutto quello che sembra un lista di espressioni sembra anche una lista di fette, così ogni subscription può essere interpretata come un'affettamento. Invece di complicare la sintassi, l'ambiguità viene evitata definendo che in questo caso l'interpretazione come una subscription ha la priorità sull'affettamento (questo è il caso in cui la lista di fette non contiene fette appropriate né elementi ellittici). In modo simile, quando la lista di fette ha esattamente una fetta concisa e nessuna virgola a seguire, l'interpretazione come semplice affettamento ha la priorità come se fosse un'affettamento esteso.

Segue la semantica per un'affettamento semplice. La primitiva deve valutare una sequenza. Le espressioni di partenza e di arrivo, se presenti, devono esprimere un intero; i valori predefiniti sono rispettivamente zero e sys.maxint. Se entrambi sono negativi, gli viene aggiunta la lunghezza della sequenza. L'affettamento seleziona quindi tutti gli elementi con indice k cosicché i <= k < j dove i e j sono i legami di partenza ed arrivo specificati. Questa può essere una sequenza vuota. Non è un errore se i o j oltrepassano l'intervallo di indici valido (se gli elementi non esistono, non vengono selezionati).

Segue la semantica per un'affettamento esteso. La primitiva deve valutare una mappa che viene indicizzata con una chiave che è costituita almeno da una virgola, la chiave è una tupla contenente la conversione degli elementi della fetta; altrimenti, la conversione della sola fetta è la chiave. La conversione di un elemento di una fetta ellittica è l'oggetto built-in Ellipsis. La conversione di una fetta opportuna è un oggetto fetta (vedete la sezione 3.2) i cui attributi di partenza, arrivo e passo (NdT: start, stop e step) sono i valori dell'espressione data come lower_bound, upper_bound e stride, rispettivamente, sostituendo None ad espressioni omesse.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.