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.

Lembre-se

• As abrangências de lista podem causar problemas quando o fluxo de dados na

entrada for muito intenso, consumindo muita memória.

• As expressões geradoras evitam os problemas de memória porque devolve

um iterador que produz apenas um valor por vez.

• As expressões geradoras podem ser compostas, bastando passar o iterador de

uma expressão geradora para a subexpressão for de outra.

• Quando aninhadas juntas, duas ou mais expressões geradoras executam de

forma veloz no Python.

Item 10: Prefira enumerate em vez de range

A função nativa range é útil para laços em iteração sobre um conjunto de

inteiros.

random_bits = 0

for i in range(64):

if randint(0, 1):

random_bits |= 1 << i

Em uma estrutura de dados que se queira varrer iterativamente, como uma lista

de strings, é possível usar um laço para varrer a sequência diretamente.

flavor_list = ['vanilla', 'chocolate', 'pecan', 'strawberry']

for flavor in flavor_list:

print('%s is delicious' % flavor)

Muitas vezes, é necessário iterar sobre uma lista e também obter o índice do item

atual. Por exemplo, imagine que se queira mostrar o ranking dos sabores

favoritos de sorvete. Uma das maneiras de fazê-lo é com range.

for i in range(len(flavor_list)):

flavor = flavor_list[i]

print('%d: %s' % (i + 1, flavor))

O código é bastante desajeitado, se comparado aos outros exemplos de iteração

com flavor_list ou range. É preciso obter o tamanho da lista. É preciso

considerar os índices do array. É difícil de ler.

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!