Analise o código Python a seguir. x = lambda a, b: a + [a[-1] + a[-2] + b] y=[-1,0] for i in range(7): y = x(y, i) print (y) O resultado produzido pela execução desse código na IDLE Shell 3.9.9 é:
- A)[-1, 0, -1, -1, -2, -3, -5, -8, -13]
Errada, porque os termos nao formam a sequencia de Fibonacci negativa sem considerar o valor de i no laco.
- B)[0, -1, 4, 9, 18, 33, 51, 84]
Errada, pois a primeira atualizacao da lista nao produz 4 como segundo termo da sequencia.
- C)[-1, 0, -1, -2, -3, -5, -8, -13, -21]
Errada, porque ignora o acréscimo do i e gera uma progressao diferente da que o codigo realmente imprime.
- D)[-1, 0, -1, 0, 1, 4, 9, 18, 33]
Certa, pois cada nova posicao recebe a soma dos dois ultimos elementos da lista mais o valor corrente de i.
- E)[-1, 0, -1, 4, 9, 18, 33, 51]
Errada, porque o tamanho e os valores da lista final nao batem com as 7 iteracoes do for.
Gabarito: D
A ideia aqui é enxergar que a funcao lambda recebe a lista atual e acrescenta um novo elemento no fim. Esse novo elemento vem da soma dos dois ultimos valores da lista, mais o valor de i do for. Em outras palavras, a cada volta do laco, a lista vai crescendo como uma sequencia recursiva, quase um Fibonacci com tempero extra do contador. Comecando com y = [-1, 0], o primeiro passo usa a = [-1, 0] e b = 0, entao o novo termo e -1 + 0 + 0 = -1. Depois, com y = [-1, 0, -1] e b = 1, o novo termo passa a ser 0 + (-1) + 1 = 0. Daqui em diante, a mesma regra se repete: sempre pega os dois ultimos elementos e soma com o i da vez. Se voce acompanhar as 7 iteracoes, a lista final fica [-1, 0, -1, 0, 1, 4, 9, 18, 33]. Esse e justamente o padrao da alternativa D. O print mostra a lista completa, porque em Python listas sao mutaveis no sentido de referencia da variavel, mas aqui a cada iteracao o retorno da lambda substitui y por uma nova lista extendida. A pegadinha e achar que a sequencia segue Fibonacci puro. Nao segue, porque o b do for entra na conta e altera o valor de cada novo termo. Por isso, a conta correta depende tanto dos dois ultimos elementos quanto do indice atual.