Nomeando fatias de sequências em Python

Nomeando fatias de sequências em PythonQuem já precisou escrever algum programa para obter valores dentro de uma string, lista ou outra sequência semelhante, certamente acabou envolvido em uma grande confusão de valores fixos (hardcoded) de índices ao longo do código. Para evitar isso, é bem provável que você tenha recorrido a algo como:

CAMPO_X_INICIO = 5
CAMPO_X_FIM = 10
CAMPO_Y_INICIO = 16
CAMPO_Y_FIM = 19

Mas Python é Python: sempre dá para melhorar seu código quando você aprende mais sobre os recursos da linguagem. Para tornar esse tipo de código ainda mais legível e fácil de manter, podemos usar a função built-in slice. Em seu uso mais comum, a função recebe os índices inicial e final de uma fatia e retorna um objeto do tipo slice, que representa uma porção de uma sequência.

Na prática, funciona assim: vamos supor que temos um arquivo texto no qual cada linha é um registro contendo o número de matrícula do aluno e as suas três notas em uma determinada disciplina:

>>> registro = "12345041009"

Os cinco primeiros caracteres correspondem sempre ao número de matrícula. Os dois caracteres seguintes são a primeira nota, os dois seguintes são a segunda e os dois restantes são a terceira.

Usando slice() para armazenar os intervalos correspondentes, temos:

>>> MATRICULA = slice(0, 5)
>>> NOTA_1 = slice(5, 7)
>>> NOTA_2 = slice(7, 9)
>>> NOTA_3 = slice(9, 11)

Com isso, temos uma forma muito mais legível de definir os limites de cada fatia que nos interessa na sequência, o que nos permite obter facilmente os valores que queremos:

>>> registro[MATRICULA]
'12345'
>>> registro[NOTA_1]
'04'
>>> registro[NOTA_2]
'10'
>>> registro[NOTA_3]
'09'

Referência: Python Cookbook, 3rd Edition (recomendo fortemente!)

Photo Credit: Jorge Quinteros via Compfight cc

Anúncios

3 ideias sobre “Nomeando fatias de sequências em Python

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s