1
resposta

Saida com INSERT.

Considere o código a seguir:


def strange_list_fun(n):
    strange_list = []

    for i in range(0, n):
        strange_list.insert(0, i)

    return strange_list

print(strange_list_fun(5))

Por que a saida é 4,3,2,1,0 e não 0,1,2,3,4?

  1. for i in range(0, n): Repare que aqui ele faz um loop de "i" até "n-1". Ou seja, 0 a 4.
  2. strange_list.insert(0, i): Já aqui ele vai inserindo o valor de "i" sempre na posição "0"(?). Se sim, como o "i" inicia em "0" ele não deveria ser inserido primeiro? Depois, 1, 2 etc?

Grato.

1 resposta

Olá, Rogério. Tudo bem?

O trecho de código strange_list.insert(0, i) realmente insere os valores sempre na posição 0. E o loop vai de 0-4.

Porém, a saída é 4, 3, 2, 1, 0 ocorre justamente devido ao insert(0, i). Pois quando um novo valor é inserido na primeira posição do vetor, os demais valores que já estavam no vetor são "empurrados" para as próximas posições do vetor.

Para entender melhor como isso acontece, vamos passar pelos detalhes da execução desse código.

  • Na primeira iteração do loop, o valor 0 é inserido na posição 0 do vetor.

  • Na segunda iteração do loop, o valor 1 é inserido na posição 0 do vetor. E o valor 0 vai para a posição posterior, ou seja, a posição 1.

  • Na terceira iteração, o valor 2 é inserido na posição 0. Fazendo com que o valor 1 que se encontrava na posição 0, vá para a posição 1. E o valor 0, que estava na posição 1, vá pra a posição 2.

  • Na quarta iteração, o valor 3 é inserido na posição 0. Assim o valor 2 vai para a posição 1, o valor 1 vai para a posição 2 e o valor 0 vá para a posição 3.

  • Por fim, na quinta iteração, o valor 4 é inserido na posição zero. Desse modo, os valores 3 2 1 e 0 são transferidos para as próximas posições, ficando respectivamente nas posições 1, 2, 3 e 4.

Assim, a saída final do código será 4, 3, 2, 1, 0.

Espero ter esclarecido o funcionamento desse código para você. Qualquer outra dúvida estou a disposição.

Abraços. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!