Fatiamento em [[Linguagem de programação Python|Python]] é uma técnica poderosa para extrair partes de sequências (como listas, strings e tuplas) usando a notação `[start:stop:step]`. Essa notação cria uma nova sequência contendo os elementos no intervalo especificado.
* **`start`**: Índice do primeiro elemento a ser incluído na fatia (inclusivo). Se omitido, o padrão é 0 (início da sequência).
* **`stop`**: Índice do primeiro elemento a _não_ ser incluído na fatia (exclusivo). Se omitido, o padrão é o comprimento da sequência (até o final).
* **`step`**: O intervalo entre os elementos incluídos na fatia. Se omitido, o padrão é 1. Pode ser negativo para percorrer a sequência de trás para frente.
**Exemplos:**
```python
l = [10, 20, 30, 40, 50, 60]
print(l[:2]) # Do início até o índice 2 (exclusivo): [10, 20]
print(l[2:]) # Do índice 2 até o final: [30, 40, 50, 60]
print(l[::2]) # Elementos em índices pares: [10, 30, 50]
print(l[::-1]) # Inverte a lista: [60, 50, 40, 30, 20, 10]
print(l[1:5:2]) # Do índice 1 ao 5 (exclusivo), pulando de 2 em 2: [20, 40]
s = "Python"
print(s[1:4]) # Fatiando uma string: "yth"
print(s[::-1]) # Invertendo a string: "nohtyP"
```
**Fatiamento com Índices Negativos:**
Índices negativos contam a partir do final da sequência. `-1` é o último elemento, `-2` o penúltimo, e assim por diante.
```python
l = [10, 20, 30, 40, 50, 60]
print(l[:-1]) # Todos os elementos, exceto o último: [10, 20, 30, 40, 50]
print(l[-3:]) # Os últimos três elementos: [40, 50, 60]
```
# A Função `slice()`:
A função `slice()` cria um objeto slice que pode ser usado para fatiar sequências. Isso é útil quando você precisa reutilizar a mesma fatia várias vezes ou quando os índices de fatiamento são determinados dinamicamente.
```python
fatia = slice(1, 4) # Cria um slice do índice 1 ao 4 (exclusivo)
l = [10, 20, 30, 40, 50, 60]
print(l[fatia]) # Aplica o slice à lista: [20, 30, 40]
inicio = 2
fim = 5
fatia_dinamica = slice(inicio, fim)
print(l[fatia_dinamica]) # Aplica o slice dinâmico: [30, 40, 50]
```
# Observações Importantes:
* O fatiamento sempre retorna uma _nova_ sequência. No caso de strings, isso significa que uma nova string é criada (strings são imutáveis em [[Linguagem de programação Python|Python]]).
* Se `start` ou `stop` estiverem fora dos limites da sequência, [[Linguagem de programação Python|Python]] ajusta os valores para os limites válidos.
Fatiamento é uma ferramenta fundamental em [[Linguagem de programação Python|Python]] para manipular sequências de dados de forma eficiente e concisa.
:: **Referência** :: [Built-in Functions - Slice - Python 3.11.0 Documentation](https://docs.python.org/3/library/functions.html#slice)