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.

As funções do módulo bisect, como, por exemplo, bisect_left, executam uma

busca binária bem eficiente ao longo de uma sequência de itens ordenados. O

índice devolvido é o ponto de inserção do valor na sequência.

i = bisect_left(x, 991234)

A complexidade de uma busca binária é logarítmica. Isso significa que usar

bisect para buscar um valor em uma lista de um milhão de itens consome mais

ou menos o mesmo tempo que usar index para fazer uma busca linear em uma

lista de 14 itens. É muito mais rápido!

Ferramentas de iteração

O módulo nativo itertools contém uma grande quantidade de funções muito úteis

para organizar e manipular os iteradores (consulte o Item 16: “Prefira geradores

em vez de retornar listas” e o Item 17: “Seja conservador quando iterar sobre

argumentos” para saber mais). Nem todos eles estão disponíveis no Python 2,

mas podem ser construídos à mão usando receitas simples documentadas no

módulo. Consulte help(itertools) em uma sessão interativa do Python para mais

detalhes.

As funções de itertools recaem em três categorias principais:

• Reunir iteradores

• chain: Combina múltiplos iteradores em um único iterador sequencial.

• cycle: Repete ciclicamente e sem interrupção os itens de um iterador.

• tee: Divide um único iterador em múltiplos iteradores paralelos.

• zip_longest: Uma variante da função nativa zip que funciona muito bem

com iteradores de tamanhos diferentes.

• Filtrar itens em um iterador

• islice: Fatia um iterador pelo seu índice numérico sem criar uma cópia.

• takewhile: Devolve itens de um iterador enquanto uma função predicada

retornar True.

• dropwhile: Devolve itens de um iterador quando a função predicada

devolver False pela primeira vez.

• filterfalse: Devolve itens de um iterador sempre que uma função predicada

devolver False. Exatamente o oposto do que faz a função nativa filter.

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!