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
extendpara 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
- Criamos
letrascom seis caracteres. letras[1:5]extrai os elementos dos índices 1 a 4:['b', 'c', 'd', 'e'].sub[::-1]cria uma cópia invertida:['e', 'd', 'c', 'b'].sorted(reverso)retorna uma nova lista ordenada alfabeticamente:['b', 'c', 'd', 'e'].reverso.extend(['x', 'y'])adiciona os dois elementos ao final.- 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 deextend: 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']