Geradores em Python

Dicas gratuitas de revisão do Python — #PySeries#Episódio 17

#GERADORES EM PYTHON: O que é?

Generators in Python allows us to write a function that can send back a value and then later resume to pick up where it left off.

Vamos começar com uma função de fibonacci :

Saída (Inserindo 10):

How many terms? 10 Fibonacci sequence: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

02 #PyEx — Python —Função — Fubonacci Simplificado :

Vamos simplificar o código para esta lição, considere este pedaço de código (Zero out :)

def gen_fibo(n):
a = 1
b = 1
output = []
for i in range(n):
output.append(a)
a,b = b, a + b
return output

gen_fibo(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Vamos pegar um!

Agora usando a palavra-chave yield na segunda função fibo para torná-la mais eficiente em memória :-)

03 #PyEx — Python — Função — Fubonacci w/ yield :

def gen_fibo(n):
a = 1
b = 1
for i in range(n - 1):
yield a
a, b = a, a + b

g = gen_fibo(10)
g
<generator object gen_fibo at 0x7f0cecb33ed0>

Você vê a diferença? Não? Então continue lendo…

Esta última função é um Gerador. Afinal, o que é um Gerador?

A Geradores é muito mais eficiente em relação ao uso de memória; não estamos carregando os dados completamente, na memória, como no código com append();

Trabalhamos apenas em streams, ou seja, salvamos apenas os dados que o precedem imediatamente, e assim estamos economizando memória; o objeto é muito mais simples :)

Outra função interativa:

Vamos ver outro gerador:

04 #PyEx — Python — Função — Gerador Simples :

def simple_gen():
for x in range (4):
yield x

g = simple_gen()
g
<generator object simple_gen at 0x7f0cecb334d0>

A saída:

next(g)
0
next(g)
1
next(g)
2
next(g)
3

05 #PyEx — Python — String — São interativos?

Agora, vamos ver se um objeto string é interativo…

s = ‘hello’
for letter in s:
print(letter)
h
e
l
l
o

next(s)
---------------------------------------------------------------TypeError                           Traceback (most recent call last)
<ipython-input-262-46f008985a16> in <module>()
      1 # String is not interactable:/
----> 2 next(s)
TypeError: 'str' object is not an iterator

Para transformar Strings em um objeto interativo, use a função iter() :

s_iter = iter(s)
next(s_iter)

next(s_iter)
'h'
next(s_iter)
'e'
(...)

Então, aqui está o código gerador final para nossa função fibonacci:

A saída:

g = prog_fibo_2(10)
g
<generator object gen_fibo_ef at 0x7f0cecb34350>
next(g)
1
next(g)
1
next(g)
2
(...)

Esta nota contém um trecho do Python Data Science Handbook de Jake VanderPlas;

O conteúdo está disponível no GitHub .

O texto é liberado sob a licença CC-BY-NC-ND e o código é liberado sob a licença MIT . Se você achar este conteúdo útil, considere apoiar o trabalho comprando o livro !

Agora execute pip:

07 #PyEx — Python — String — Criação de perfil e tempo

pip install memory_profiler
Requirement already satisfied: memory_profiler in /usr/local/lib/python3.7/dist-packages (0.58.0) Requirement already satisfied: psutil in /usr/local/lib/python3.7/dist-packages (from memory_profiler) (5.4.8)

%load_ext memory_profiler
The memory_profiler extension is already loaded. To reload it, use:   %reload_ext memory_profiler

def gen_fibo(n):
a = 1
b = 1
output = []
for i in range(n):
output.append(a)
a,b = b, a + b
return output

%timeit gen_fibo(10)
1000000 loops, best of 5: 1.31 µs per loop

def prog_fibo_2(n):
 a = 1
 b = 1
 for i in range(n):
    yield a
    a, b = b, a + b

%timeit prog_fibo_2(10)
1000000 loops, best of 5: 236 ns per loop

print(“That’s it! thank you for reading his episode about the wonders of Python:) “)
That's it! thank you for reading his episode about the wonders of Python:)

Até a próxima vez!

Desejo um excelente dia!

Ser seguro!

Felicidades!

Os blocos de anotações do Google Colab estão aqui:

Link do Notebook do Colab :)

Links do Google Drive :)

Postagens relacionadas:

00Episode# PySeries — Python — Jupiter Notebook Quick Start com VSCode — Como definir seu ambiente Win10 para usar o Jupiter Notebook

01Episode# PySeries — Python — Python 4 Engineers — Exercícios! Uma visão geral das oportunidades oferecidas pelo Python na engenharia!

02Episode# PySeries — Python — Geogebra Plus Linear Programming- Vamos criar um programa Geogebra para nos ajudar com nossa programação linear

03Episode# PySeries — Python — Python 4 Engineers — Mais exercícios! — Outra rodada para garantir que o Python seja realmente incrível!

04Episode# PySeries — Python — Regressões lineares — O básico — Como entender a regressão linear de uma vez por todas!

05Episode# PySeries — Python — NumPy Init & Python Review — Uma revisão e inicialização do Crash Python no NumPy lib.

06Episode# PySeries — Python — NumPy Arrays e Jupyter Notebook — Operações aritméticas, indexação e fatiamento e seleção condicional com arrays np.

07Episode# PySeries — Python — Pandas — Intro & Series — O que é? Como usá-lo?

08Episode# PySeries — Python — Pandas DataFrames — A estrutura de dados primária do Pandas! É um contêiner do tipo dict para objetos Series

09Episode# PySeries — Python — Python 4 Engineers — Ainda mais exercícios! — Mais questões de codificação praticando em Python!

10Episode# PySeries — Python — Pandas — Hierarchical Index & Cross-section — Abra seu notebook Colab e aqui estão os exercícios de acompanhamento!

11Episode# PySeries — Python — Pandas — Dados ausentes — Vamos continuar os exercícios de Python — Preenchendo e descartando dados ausentes

12Episode# PySeries — Python — Pandas — Group By — Agrupando grandes quantidades de dados e operações de computação nesses grupos

13Episode# PySeries — Python — Pandas — Merging, Joining & Concatenations — Facilidades para combinar facilmente séries ou DataFrame

14Episode# PySeries — Python — Pandas — Pandas Dataframe Exemplos: operações de coluna

15Episode# PySeries — Python — Python 4 Engineers — Mantendo-o na memória de curto prazo — Teste você mesmo! Codificando em Python, de novo!

16Episode# PySeries — NumPy — NumPy Review, Again;) — Python Review Free Exercises

17Episode# PySeries —Generators in Python — Python Review Free Hints (este)

Suggested posts

Como executar plugins ChatGPT gratuitamente usando Langchain

Como executar plugins ChatGPT gratuitamente usando Langchain

Você deve ter ouvido falar sobre todos os novos plug-ins poderosos do ChatGPT, como navegador, intérprete de código, etc. Mas há um problema, o acesso aos plug-ins é limitado a uma lista de espera e, portanto, muitos não têm acesso a ela.

Meus recursos de codificação mais usados

Meus recursos de codificação mais usados

Esta semana, recebi um e-mail de um membro da lista de e-mails diários. Eles queriam saber: quais recursos você visita diariamente, semanalmente e mensalmente? Ótima pergunta! Fico feliz em tentar compartilhar algumas ideias sobre meu fluxo de trabalho e os principais recursos que uso.

Related posts

Rastreie qualquer pessoa com apenas um número de telefone | Investigação OSINT

Rastreie qualquer pessoa com apenas um número de telefone | Investigação OSINT

Você pode ser um investigador OSINT, jogador CTF ou simplesmente alguém que está recebendo chamadas de spam. Alguém que está tentando verificar o número que você viu em um anúncio.

A performance solo da garota ruiva

A pedido de Hayden, Katie se filma se masturbando.

A performance solo da garota ruiva

Passava da meia-noite quando Hayden levou Katie de volta ao dormitório da faculdade depois da noite juntos. Ela tinha aula cedo de manhã e não tinha outra troca de roupa depois de ter ficado com ele na noite anterior.

Coletando OSINT para caçar ameaças

Coletando OSINT para caçar ameaças

Olá, entusiastas cibernéticos! Bem-vindo de volta ao OSINT para a série de caça a ameaças. No primeiro artigo, apresentei uma visão geral do OSINT e sua importância na caça às ameaças.

pronomes são super assustadores

Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..