Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

qual a função do [""], que está logo ao lado do for, neste código?

A ideia deste código é receber uma lista numérica, que deve está em ordem crescente, e devolver uma string com uma formatação diferente. Exemplo: solution([-6,-3,-2,-1,0,1,3,4,5,7,8,9,10,11,14,15,17,18,19,20]) retorna: -6,-3-1,3-5,7-11,14,15,17-20 como se fosse um range.

def solution(args):
    out = []
    beg = end = args[0]

    for n in args[1:] + [""]:
        if n != end + 1:
            if end == beg:
                out.append(str(beg))
            elif end == beg + 1:
                out.extend([str(beg), str(end)])
            else:
                out.append(str(beg) + "-" + str(end))
            beg = n
        end = n
    print(out)
    return ",".join(out)
2 respostas
solução!

Olá Daniel.

A função do [""] é fazer o for ir até o tamanho do vetor args + 1 , ele faz isso aumentando o vetor com mais uma posição e ele precisa fazer isso porque ele começa na primeira posição 1 e não da posição 0.

    for n in args[1:] + [""]:
        if n != end + 1:

Consegui substituir esse for por um que usa o range que começa em 1 e vai até o tamanho de args somando +1, porem a complexidade aumentou porque tive que acrescentar um if para garantir que não tentaríamos acessar uma posição invalida no array args.

    for i in range(1,len(args)+1):
        if i < len(args):
            n = args[i]

Qualquer duvida não hesite em perguntar.

Bons estudos.

Vlw cara :D Estava realmente perdido tentando entender essa parte, mas você me elucidou :)