lettura facile

La funzione islice() in Python

La funzione islice() del modulo itertools in Python ti aiuta a estrarre una selezione di elementi da un iterabile, come una lista o un generatore, senza dover copiare l'intero iterabile in memoria.

itertools.islice(iterabile, start, stop[, step])

Questa funzione ha diversi argomenti:

  • iterabile è l'iterabile da cui desideri estrarre gli elementi. Può essere qualsiasi oggetto iterabile come una lista, una tupla, o un generatore.
  • start è l'indice di inizio da cui iniziare l'estrazione. È incluso nel risultato.
  • stop è l'indice di fine fino a cui estrarre gli elementi. Non è incluso nel risultato.
  • step (opzionale) è il passo con cui estrarre gli elementi. Se lo specifichi, islice() salterà gli elementi secondo il valore di step. Per esempio, uno step 2 seleziona gli elementi ignorando il successivo.

La funzione islice() restituisce un iteratore che genera una selezione di elementi dall'iterabile, basata sugli indici di inizio, fine e passo che hai specificato.

Ricorda che la funzione islice() restituisce in output un iteratore. Se vuoi ottenere in uscita una lista, devi trasformare l'output usando la funzione list() come nell'esempio seguente. Inoltre, non supporta i numeri negativi.

Ecco una guida pratica per imparare a usarla.

Per prima cosa, importa la funzione dal modulo itertools di Python.

from itertools import islice

Poi crea un iterabile, ad esempio una lista.

iterabile = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Ora usa la funzione islice() per estrarre gli elementi dall'indice 2 all'indice 5.

sliced = islice(iterabile, 2, 6)

Il risultato viene salvato nella variabile sliced.

Stampa il contenuto della variabile sotto forma di lista usando la funzione list().

print(list(sliced))

Il contenuto della lista è la sequenza di elementi compresa dall'indice 2 all'indice 5.

[2, 3, 4, 5]

Ecco un altro esempio pratico.

Scrivi la funzione islice() specificando solo l'indice di fine della selezione.

sliced = islice(iterabile, 5)
print(list(sliced))

In questo caso, islice() inizia la selezione dall'inizio dell'iterabile ed estrae solo i primi 5 elementi

[0, 1, 2, 3, 4]

Il passo

La funzione islice() ti permette anche di specificare un "passo", proprio come lo slicing delle liste.

sliced = islice(iterabile, 2, 9, 2)
print(list(sliced))

Il risultato è una lista con gli elementi dall'indice 2 all'indice 8 senza gli elementi successivi.

[2, 4, 6, 8]

I generatori

La funzione islice() è particolarmente utile con i generatori, dove non puoi usare il normale slicing.

  1. def gen_numeri():
  2. n = 0
  3. while True:
  4. yield n
  5. n += 1
  6. iterabile = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  7. gen = gen_numeri()
  8. sliced = islice(gen, 5, 10)
  9. print(list(sliced))

Il risultato in output è una lista con gli elementi selezionati.

[5, 6, 7, 8, 9]

Questi sono i concetti di base per iniziare a usare islice() in Python.

È un ottimo strumento per gestire grandi quantità di dati o per lavorare con sequenze generative senza caricare l'intera sequenza in memoria.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin