15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

• Combinação de itens entre iteradores

• product: Devolve o produto cartesiano dos itens de um iterador, o que é

uma alternativa bastante elegante a abrangências de listas com muitos

níveis de aninhamento.

• permutations: Devolve permutações ordenadas de tamanho N com os itens

de um iterador.

• combination: Devolve as combinações não ordenadas de tamanho N com os

itens únicos (sem repetição) de um iterador.

Há ainda mais funções e receitas disponíveis no módulo itertools que não

mencionei aqui. Sempre que sentir alguma dificuldade em resolver algum

problema intrincado de iteração, vale a pena dar uma olhada na documentação

do módulo itertools para ver se há algo lá que possa facilitar sua vida.

Lembre-se

• Use os módulos nativos do Python para algoritmos e estruturas de dados.

• Não reimplemente você mesmo essa funcionalidade. Reinventar a roda é

difícil e trabalhoso.

Item 47: Use decimal quando a precisão for de

importância vital

O Python é uma linguagem excelente para escrever código que interaja com

dados numéricos. O tipo inteiro do Python pode representar valores de qualquer

magnitude prática. Já o tipo em ponto flutuante de precisão dupla atende à norma

IEEE 754. A linguagem também oferece um tipo-padrão de número complexo

para valores imaginários. Entretanto, eles nem sempre são suficientes.

Por exemplo, digamos que se queira computar quanto cobrar de um cliente por

uma ligação telefônica internacional. Sabemos o tempo de duração da chamada

em minutos e segundos (digamos, 3 minutos e 42 segundos). Também temos

uma tarifa-padrão para ligações entre a Antártida e os Estados Unidos

($1,45/minuto). Quanto devemos cobrar?

Com matemática em ponto flutuante, o valor cobrado parece razoável.

rate = 1.45

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!