sexta-feira, 16 de setembro de 2011

Correndo uma lista de valores similar a lista de impressão

Para uma entrada  1;2;3-6;7;8-10, por exemplo, assim como na impressão seria impresso as páginas 1, 2, de 3 a 6, 7 e de 8 a 10, precisei fazer um esquema para liberação de pedidos segundo essa entrada para liberar faixas distintas de pedidos.

Para tal, uso a def abaixo:

def corre_cadeia(lista_char, separador_item, identificador_lista):
 lista  = lista_char.split(separador_item)
 nova_lista = []
 for l in lista:
  if l.find(identificador_lista) == -1:
   nova_lista.append(int(l))
  else:
   inicio, termino = l.split(identificador_lista)
   inicio = int(inicio)
   termino = int(termino)
   i = inicio
   while i<= termino:
    nova_lista.append(i)
    i+=1
 return nova_lista

Ex:
>>> lista = '1;2;3-6;7;8-10'
>>> corre_cadeia ( lista, ';' , '-')
[1,2,3,4,5,6,7,8,9,10]

hasta!

Nenhum comentário:

Postar um comentário