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: simbolos.remove (original symbols [orderIndex [1]])
IndexError: list index out of range
In the various% w_that I'm doing in the prints
al list, at the time before the error I'm getting:
simbolosOriginal[ordemIndex[0]]= 'd'
simbolosOriginal[ordemIndex[1]] = 'bc'
The list simbolos
is simbolos
.
Being ['a', 'bc']
has the value print simbolosOriginal[ordemIndex[1]
and it's in the list I do not understand why it says 'bc'
is index
.
How can I fix this?