Desafio Python

Fatiamento reverso e ordenação personalizada

Enunciado

Crie uma lista letras = ['a', 'b', 'c', 'd', 'e', 'f']. Use fatiamento para criar uma sublista com os elementos de índice 1 a 5 (exclusivo) em ordem reversa (passo -1) e armazene em reverso. Depois, ordene reverso em ordem alfabética usando sorted() e imprima o resultado. Por fim, use extend para adicionar os elementos ['x', 'y'] a reverso e imprima a lista final.

Requisitos

  • Usar fatiamento com passo negativo para obter a sublista reversa.
  • Usar sorted() para ordenar a sublista.
  • Usar extend para adicionar ['x', 'y'].
  • Imprimir a lista final.

Código inicial

letras = ['a', 'b', 'c', 'd', 'e', 'f']
# Seu código aqui

Saída esperada

['b', 'c', 'd', 'e', 'x', 'y']
Ver dica

O fatiamento [1:5:-1] não funciona como esperado; para reverter, use [1:5][::-1] ou [4:0:-1]. Pense com cuidado.

Mostrar solução
letras = ['a', 'b', 'c', 'd', 'e', 'f']
# Fatiamento normal do índice 1 ao 5 (exclusivo)
sub = letras[1:5]          # ['b', 'c', 'd', 'e']
# Reverter a sublista com passo -1
reverso = sub[::-1]        # ['e', 'd', 'c', 'b']
# Ordenar em ordem alfabética
reverso = sorted(reverso)  # ['b', 'c', 'd', 'e']
# Adicionar mais elementos
reverso.extend(['x', 'y'])
print(reverso)

Passo a passo

  1. Criamos letras com seis caracteres.
  2. letras[1:5] extrai os elementos dos índices 1 a 4: ['b', 'c', 'd', 'e'].
  3. sub[::-1] cria uma cópia invertida: ['e', 'd', 'c', 'b'].
  4. sorted(reverso) retorna uma nova lista ordenada alfabeticamente: ['b', 'c', 'd', 'e'].
  5. reverso.extend(['x', 'y']) adiciona os dois elementos ao final.
  6. Imprimimos a lista final.

Por que funciona

O fatiamento com passo negativo percorre a lista de trás para frente. sorted() não modifica a lista original, mas como reatribuímos o resultado a reverso, a variável passa a apontar para a nova lista ordenada. extend modifica a lista no local.

Erros comuns

  • Tentar letras[1:5:-1]: isso retorna uma lista vazia porque o passo negativo percorre do início para o fim, mas os índices estão invertidos. O correto é fatiar primeiro e depois reverter.
  • Esquecer de reatribuir reverso = sorted(reverso): sorted() não altera a lista original.
  • Usar append(['x', 'y']) em vez de extend: adicionaria uma lista dentro da lista.

Outra forma de resolver

Poderia usar reverso = sorted(letras[1:5], reverse=True) para obter a ordem reversa diretamente, mas o enunciado pede fatiamento com passo negativo.

Saída esperada

['b', 'c', 'd', 'e', 'x', 'y']