4
def gera_huffman(simbolosOriginal, probabilidadesOriginal):
# gera_huffman(['a', 'b','c', 'd'], [5, 2, 1, 2])
simbolos = simbolosOriginal
probabilidades = probabilidadesOriginal
lista = []
while (len(simbolos) > 2):
ordem = np.sort(probabilidades)
ordemIndex = np.argsort(probabilidades)
novaProbabilidades = ordem[0]+ordem[1]
novoSimbolo = simbolos[ordemIndex[1]] + simbolos[ordemIndex[0]]
print novaProbabilidades , novoSimbolo, simbolosOriginal[ordemIndex[0]],simbolosOriginal[ordemIndex[1]]
print simbolos
simbolos.remove(simbolosOriginal[ordemIndex[0]])
print simbolos
simbolos.remove(simbolosOriginal[ordemIndex[1]])
print simbolos
probabilidades.remove(probabilidadesOriginal[ordemIndex[0]])
probabilidades.remove(probabilidadesOriginal[ordemIndex[1]])
probabilidades.append(novaProbabilidades)
simbolos.append(novoSimbolo)
print simbolos
simbolosOriginal = simbolos
probabilidadesOriginal = probabilidades
if(len(simbolos) <= 2):
lista.append([simbolos, probabilidades])
lista.sort(reverse = True)
return lista
Error: symbols.remove(symbolosOriginal[ordemIndex[1]])
Indexerror: list index out of range
In the various prints
I’m doing on the list simbolos
, just before the error I’m getting:
simbolosOriginal[ordemIndex[0]]= 'd'
simbolosOriginal[ordemIndex[1]] = 'bc'
The list simbolos
is ['a', 'bc']
.
Whereas in the print simbolosOriginal[ordemIndex[1]
] has the value 'bc'
and he’s on the list I don’t understand why he says index
is out of range
.
How can I fix this?