slice() în Python

Creează un obiect „felie”, echivalentul lui [start:stop:pas], care poate fi salvat și refolosit.

Sintaxă
slice(stop)
slice(start, stop[, pas])

Ce face slice()

Când scrii lista[1:5:2], Python creează în spate slice(1, 5, 2). Funcția slice() îți permite să păstrezi o astfel de felie într-o variabilă cu nume, util când extragi aceleași poziții din multe texte sau liste (de exemplu câmpuri de lățime fixă).

Metoda .indices(lungime) calculează valorile concrete (start, stop, pas) pentru o secvență de lungimea dată.

Parametri

Parametru Descriere
start Opțional. Poziția de început (inclusă).
stop Poziția de sfârșit (exclusă).
pas Opțional. Pasul.

Ce returnează

Un obiect slice.

Exemple

Exemplul 1: Câmpuri de lățime fixă

COD = slice(0, 4)
NUME = slice(4, 14)
PRET = slice(14, None)

randuri = ["P001Pâine       4.50", "P002Cafea      32.90"]
for r in randuri:
    print(r[COD], r[NUME].strip(), float(r[PRET]))

Rezultat

P001 Pâine 4.5
P002 Cafea 32.9

Exemplul 2: Echivalența cu sintaxa [::]

numere = list(range(10))
f = slice(1, 8, 3)
print(numere[f], numere[1:8:3])
print(f.indices(5))

Rezultat

[1, 4, 7] [1, 4, 7]
(1, 5, 3)

Greșeli frecvente

  • Te aștepți ca slice() să returneze elementele. Returnează doar descrierea feliei; o aplici cu secventa[felie].

Comenzi înrudite

  • list (liste): Lista este o colecție ordonată și modificabilă de elemente, scrisă între paranteze drepte.
  • range(): Generează un șir de numere întregi, folosit mai ales în bucle for.
  • itertools.islice(): Ia o „felie” dintr-un iterator sau generator, ca [start:stop:pas] la liste.