quarta-feira, 21 de julho de 2010

gerando strings ou inteiros em ordem sequencial

em haskell, listas podem gerar uma sequência de inteiros ou strings apenas usando ellipsis, exemplo:
['1'..'9']++['A'..'F']

não tenho haskell instalado para testar, mas o resultado deveria ser algo como
"123456789ABCDEF"

como em python não tem nenhuma função que se comporte desse maneira, resolvi criar um pequeno exemplo para simular o que o haskell faz


import string

def strint(*args):
    n = []
    for i in [(args[x-2:x]) for x in range(2,len(args)+2,2)]:
        n.append(string.printable[string.printable.index(i[0]) \
        :string.printable.index(i[1])+1])
    return "".join(n)




>>> strint('1','9','a','f')
1: '123456789abcdef'

lembrando que existe string.hexdigits
>>> strint('0','9','a','f','A','F')
9: '0123456789abcdefABCDEF'

>>> strint('0','6','1','3','a','F')
10: '0123456123abcdefghijklmnopqrstuvwxyzABCDEF'





Nenhum comentário:

Postar um comentário