21.12.2022 Views

python_para_desenvolvedores_2ed

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

104 Programação funcional

Generator Expression

Generator Expression é uma expressão que se assemelha ao List Comprehension,

porém funciona como um gerador.

Exemplo:

# -*- coding: latin1 -*-

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

# Eleve os ímpares ao quadrado

gen = ( x**2 for x in nums if x % 2 )

# Mostra os resultados

for num in gen:

print num

Outro exemplo:

# Uma lista de tuplas (artista, faixa):

instrumentais = [('King Crimson', 'Fracture'),

('Metallica','Call of Ktulu'),

('Yes', 'Mood for a Day'),

('Pink Floyd', 'One of This Days'),

('Rush', 'YYZ')]

# Filtra e ordena apenas as faixas de artistas anteriores a letra N

print sorted(faixa[-1] + ' / ' + faixa[0]

for faixa in instrumentais if

faixa[0].upper() < 'N')

Saída:

['Call of Ktulu / Metallica', 'Fracture / King Crimson']

Generator Expression usa menos recursos do que o List Comprehension

equivalente, pois os itens são gerados um de cada vez, apenas quando

necessário, economizando principalmente memória.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!