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.

itens de uma fatia, na forma somelist[start:end:stride]. Isso permite que se possa

selecionar os itens “pulando de n em n” no processo de fatiamento da sequência.

Por exemplo, o parâmetro stride torna fácil agrupar em listas menores os itens de

uma lista com índices pares e ímpares.

a = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']

odds = a[::2]

evens = a[1::2]

print(odds)

print(evens)

>>>

['red', 'yellow', 'blue']

['orange', 'green', 'purple']

O problema dessa técnica é que a sintaxe do stride às vezes se comporta de

maneira inesperada, o que pode introduzir bugs. Por exemplo, um truque comum

em Python para inverter a ordem em uma string do tipo byte é fatiá-la com um

stride de -1.

x = b'mongoose'

y = x[::-1]

print(y)

>>>

b'esoognom'

Funciona muito bem para strings do tipo byte contendo caracteres ASCII puros,

mas gera um erro em strings tipo byte contendo caracteres Unicode codificados

em UTF-8.

w = ''

x = w.encode('utf-8')

y = x[::-1]

z = y.decode('utf-8')

>>>

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9d in

➥position 0: invalid start byte

Outra questão: há utilidade para strides negativos diferentes de -1? Considere os

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!