Data Science do zero: Primeiras regras com o Python


def lazy_range(n): """uma versão preguiçosa de range""" i = 0 while



Baixar 5.26 Mb.
Pdf preview
Página28/75
Encontro24.07.2022
Tamanho5.26 Mb.
#24344
1   ...   24   25   26   27   28   29   30   31   ...   75
Data Science do zero - Primeiras regras
def lazy_range(n):
"""uma versão preguiçosa de range"""
i = 0
while i < n:
yield i
i += 1
O loop a seguir consumirá os valores
yield
um de cada vez até não sobrar mais
nenhum:
for i in lazy_range(10):


do_something_with(i)
(O Python geralmente vem com uma função
lazy_range
chamada
xrange
e, em
Python 3,
range
é, em si, preguiçoso (lazy).) Isso significa que você poderia criar
uma sequência infinita:
def natural_numbers():
"""retorna 1, 2, 3, ..."""
n = 1
while True:
yield n
n += 1
embora você não deveria iterar sobre ela sem usar algum tipo de lógica
break
.
O outro lado da preguiça é que você somente pode iterar com um gerador uma vez. Se
você precisar iterar múltiplas vezes, você terá que recriar um gerador todas as vezes ou
usar uma lista.
Uma segunda forma de criar geradores é usar compreensões de
for
dentro de
parênteses:
lazy_evens_below_20 = (i for i in lazy_range(20) if i % 2 == 0)
Lembre-se de que cada
dict
possui um método
items()
que retorna uma lista de seus
pares valores-chave. Veremos com mais frequência o método
iteritems()
, que
preguiçosamente
yield
s (chama) os pares de valor-chave um de cada vez
conforme iteramos sobre ele.
Aleatoriedade
Conforme aprendemos data science, precisaremos gerar números aleatórios com
uma certa frequência, o que pode ser feito com o módulo
random
:
import random
four_uniform_randoms = [random.random() for _ in range(4)]
# [0.8444218515250481, # random.random() produz números
# 0.7579544029403025, # uniformemente entre 0 e 1
# 0.420571580830845, # é a função aleatória que usaremos
# 0.25891675029296335] # com mais frequência


O módulo
random
de fato produz números pseudoaleatórios (ou seja,
determinísticos) baseado em um estado interno que você pode configurar com
random.seed
se quiser obter resultados reproduzíveis:
random.seed(10) # configura seed para 10

Baixar 5.26 Mb.

Compartilhe com seus amigos:
1   ...   24   25   26   27   28   29   30   31   ...   75




©historiapt.info 2022
enviar mensagem

    Página principal