Como dividir uma lista em Python (índices, etapas e reversão)

Aprenda como dividir listas em Python usando a poderosa sintaxe de colchetes. Argumentos mestres de início, parada e etapa, indexação negativa e listas reversas.

Experimente esta solução no Editor

Visão geral

O fatiamento é um dos recursos mais intuitivos e poderosos do Python, permitindo extrair subconjuntos de uma lista, tupla ou string com sintaxe limpa e concisa. Em vez de escrever loops detalhados para copiar elementos específicos de uma lista, a notação de fatia do Python permite especificar um intervalo de índices entre colchetes.

A sintaxe completa para fatiamento de lista é `my_list[start:stop:step]`. O índice `start` é inclusivo, o índice `stop` é exclusivo e `step` define o incremento entre os elementos (padrão 1). Se você omitir `start`, o padrão do Python é o início da lista. Se você omitir `stop`, o padrão do Python será o final da lista. Isso torna a extração de porções de coleções altamente expressiva.

O fatiamento também é extremamente versátil porque suporta índices negativos. Um índice de início ou parada negativo conta regressivamente a partir do final da lista (onde `-1` representa o último item). Ao definir um valor de passo negativo, como `my_list[::-1]`, você pode recuperar rapidamente uma cópia invertida da lista. Compreender os intervalos de fatias é essencial para uma extração limpa de dados.

Saída de código e execução

Este script demonstra o fatiamento de lista usando diferentes intervalos de início, parada, etapas, indexação negativa e reversão de lista.

list_slicing.py
Experimente no Editor
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
Saída terminal
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

Implementação passo a passo

  • Use list[start:stop] para extrair elementos do índice start até, mas não incluindo, stop.
  • Omita os índices de início ou parada (por exemplo, lista[:4] ou lista[4:]) para cortar o limite da lista.
  • Passe um terceiro argumento dentro do colchete list[::step] para pular elementos em intervalos regulares.
  • Use índices negativos para contar os elementos regressivamente a partir do final da coleção.

Perguntas frequentes

O fatiamento modifica a lista original?

Não, o fatiamento da lista retorna uma cópia superficial do intervalo solicitado, deixando a lista original totalmente inalterada.

O que acontece se os índices de fatia estiverem fora dos limites?

Ao contrário de acessar um único índice que gera um IndexError, o fatiamento é indulgente e simplesmente limita o intervalo nos limites da lista, retornando uma lista vazia se nenhum elemento estiver no intervalo.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.