Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uso no underscore ''_'' na comparação do desempenho das listas list e np.array

O professor para comparar o desempenho das lista, usa os códigos: for _ in range(100): np_array *= 2 for _ in range(100): py_list = [x * 2 for x in py_list]

Como esses códigos funcionam e qual o uso do underscore?

1 resposta
solução!

Olá, Lucas! Como vai?

Utilizando o array da biblioteca Numpy é possível realizar operações matemáticas diretas.

Então, no trecho for _ in range(100): np_array *= 2, o computador está repetindo a operação np_array *= 2 100 vezes. E a operação np_array *= 2 significa que ele está pegando cada elemento do np_array e multiplicando por 2.

Vamos imaginar que o elemento np_array[10] = 5. No final do for, esse mesmo elemento terá o valor np_array[10] = 5 * 2^100 Em resumo, np_array *= 2 faz (de forma um oculta) um loop em cada elemento do array e sobrescreve cada elemento pela dobro do que tinha lá anteriormente.

Já as listas do Python não têm essa mesma funcionalidade. Então, é necessário fazer um loop em cada elemento da lista e ir sobrescrever pelo o que tinha lá vezes dois, daí o trecho de código py_list = [x * 2 for x in py_list]. Nesse trecho, ele faz um loop em cada elemento da lista py_list (através da variável x*) e atribui aquele elemento `x2`, ou seja, o dobro do que tinha anteriormente.

Então, fica claro que é muito mais simples trabalhar com array da Numpy do que com as listas do próprio Python. Além de mais simples, os arrays do Numpy apresentam melhor performance, como mostra o professor nessa aula.

Quanto ao uso do underscore, deve-se apenas ao nome da variável em que esta sendo atribuído os valores de 0 a 99. Poderia ser qualquer outro nome... No entanto, no Python, pelo o que li em outros fóruns, o underscore sugere por convenção que quer descartar o valor que normalmente seria guardado em uma variável...

Espero ter ajudado :)