Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Não entendi os diferentes códigos de %time

Alguém poderia me explicar a diferença entre %time no py e no np?

Porque eles são escritos de formas diferentes sendo que a base de ambos é python?

%time for _ in range(100): np_array *= 2

%time for _ in range(100): py_list = [x * 2 for x in py_list]

5 respostas

O objetivo foi mostrar a diferença de desempenho das duas formas de fazer a mesma coisa.

Nesse primeiro caso, usando um array numpy:

%time for _ in range(100): np_array *= 2

A cada interação, ele multiplica todos os valores por 2 de uma só vez.

No segundo caso, usando list comprehension:

%time for _ in range(100): py_list = [x * 2 for x in py_list]

Tem que fazer um por um, vai ter que multiplicar por 2 cada um dos elementos do array, ou seja, vai ter que fazer essa multiplicação por 2 um milhão de vezes.

Já imaginou ter que fazer isso 100 vezes?

Espero ter ajudado.

Abç,

Jefferson

Oi Jefferson, obrigado pela resposta, mas oquê eu queria saber de verdade é oquê significa cada termo no código. Pelo oquê eu entendi, na expressão:

%time for _ in range(100):

Ele pegará o "_" e substituirá pela expressão que vier depois dos ":", certo?

Agora como o np_array é igual ao py_list?

solução!

Olá, Rennan. A variável _ está ali só para cumprir uma exigência sintática da estrutura de repetição "for", mas não é usada nos comandos que vêm depois. Dentro dela é guardada os valores 0, 1, 2, 3, ..., 99, para identificar cada uma das vezes em que se repetirá o que virá depois dos ":". Ali, após os ":", está a forma sucinta de se preencher uma lista, item por item. O trecho

py_list = [x * 2 for x in py_list]

vai item por item da lista py_list e multiplica cada um desses itens por 2. O primeiro "for", aquele tem o _ , diz que é para fazer 100 vezes esse processo de multiplicar por 2 cada item da lista py_list.

Bacana eu tbm estava com essa dúvida

Obrigado pessoal, agora eu entendi as diferenças entre as duas linhas de código.

Muito obrigado pela paciência,

Rennan Cruz.