Aqui, tentaremos entender a notação de fatia do python nas listas e muito mais.

Sintaxe básica

A notação de fatia do Python é usada para retornar uma lista ou parte de uma lista. A sintaxe básica é a seguinte:

[ iniciar_em : parar_antes : etapa ]


Onde iniciar_em é o índice do primeiro item a ser retornado (incluído), parar_antes é o índice do elemento antes do qual parar (não incluído) e etapa é a distância entre dois itens quaisquer.


Todos os três argumentos são opcionais, o que significa que você pode omitir qualquer um deles. Por exemplo:


numeros = [1, 2, 3, 4, 5]

 

# começar em 0, parar antes de 4

numeros [1: 4] # [2, 3, 4]

 

# começa em 0, termina no final da lista

numeros [2:] # [3, 4, 5]

 

# começa em 0, pára antes de 3

numeros [: 3] # [1, 2, 3]

 

# começar em 1, parar antes de 4, a cada segundo elemento

numeros [1: 4: 2] # [2, 4]

 

# começa em 2, termina no final da lista, a cada segundo elemento

numeros [2 :: 2] # [3, 5]

 

# começa em 0, pára antes de 3, a cada segundo elemento

numeros [: 3: 2] # [1, 3]

 

# começa em 0, termina no final da lista, a cada segundo elemento

numeros [:: 2] # [1, 3, 5]

 

# começa em 0, termina no final da lista

numeros [::] # [1, 2, 3, 4, 5]

 

 


Como você provavelmente pode perceber pelos exemplos acima, os valores padrão são iniciar_em = 0, parar_antes = len (numeros), etapa = 1.


Valores negativos

Todos os três argumentos também aceitam valores negativos. Para iniciar_em e parar_antes, um valor negativo significa contar a partir do final da lista em vez de contar a partir do início. Por exemplo, -1 representaria o último elemento, -2 o penúltimo elemento etc. Por exemplo:


 

 numeros = [1, 2, 3, 4, 5]

 

 # começar em 1, parar antes do segundo ao último

 numeros [1: -2] # [2, 3]

 

 # começa do 3º ao último, termina antes do último

 numeros [-3: -1] # [3, 4]



Uma etapa negativa significa que a lista é dividida ao contrário (do fim ao início). Isso também significa que iniciar_em  deve ser maior que  parar_antes e que  parar_antes no contexto de uma passada reversa é mais parecido com  parar_antes se você estiver olhando para a lista não invertida. Por exemplo:


 

 numeros = [1, 2, 3, 4, 5]

 

 # revertido

 

 numeros [:: - 1] # [5, 4, 3, 2, 1]

 

 # revertido, começa em 4, pare após 1

 numeros [4: 1: -1] # [5, 4, 3]

 

 # revertido, começa enfim, pare após 1, a cada 2

 numeros [-1: 1: -2] # [5, 3]


Fatias vazias

Tenha em mente que a notação de fatia é muito tolerante, então você obterá uma lista vazia se os valores dos argumentos estiverem fora do intervalo da lista. Por exemplo:



 

 numeros = [1, 2, 3, 4, 5]

 

 numeros [6: 8] # []

 numeros [: - 10] # []