15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

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

print(even_squares)

>>>

[4, 16, 36, 64, 100]

A função nativa filter pode ser usada em conjunto com o map para obter o

mesmo resultado, mas é muito mais indigesta:

alt = map(lambda x: x**2, filter(lambda x: x % 2 == 0, a))

assert even_squares == list(alt)

Os dicionários e conjuntos possuem seu próprio equivalente das abrangências de

lista, o que torna muito fácil criar estruturas de dados derivadas em nossos

algoritmos.

chile_ranks = {'ghost': 1, 'habanero': 2, 'cayenne': 3}

rank_dict = {rank: name for name, rank in chile_ranks.items()}

chile_len_set = {len(name) for name in rank_dict.values()}

print(rank_dict)

print(chile_len_set)

>>>

{1: 'ghost', 2: 'habanero', 3: 'cayenne'}

{8, 5, 7}

Lembre-se

• As abrangências de lista são mais fáceis de ler que as funções nativas map e

filter porque não precisam de expressões lambda auxiliares.

• As abrangências de lista permitem saltar itens da lista de entrada facilmente,

um comportamento que o map não suporta sem a ajuda da função filter.

• Os dicionários e conjuntos também suportam expressões abrangentes.

Item 8: Evite mais de duas expressões em

abrangências de lista

Para além do básico (consulte o Item 7: “Use abrangências de lista em vez de

map e filter”), as abrangências de lista também suportam laços em níveis

múltiplos. Por exemplo, digamos que se queira simplificar uma matriz (uma lista

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!