matriz de enteros = entero
índices de la lista deben ser enteros - que ha dado una lista de números enteros.
es probable que desee una lista de comprensión:
newarray = [ colors[i] for i in c ]
Pero que realmente debería aprender el idioma correctamente antes de usarlo. No es que Python tarde mucho tiempo en aprender.
EDIT:
Si sigue recibiendo el mismo error, entonces su afirmación de que c
es una lista de números enteros es incorrecto.
Inténtelo:
print type(c)
print type(c[0])
print type(colors)
print type(colors[0])
entonces podemos trabajar en lo tipos que tienes. También un short but complete example ayudaría, y probablemente le enseñaría mucho sobre su problema.
Edit2:
Así que si c
es en realidad una lista de cadenas, debería haber mencionado probablemente esto, las cadenas no se convierten automáticamente a números enteros, a diferencia de otros lenguajes de script.
newarray = [ colors[int(i)] for i in c ]
Edit3:
Aquí hay un código mínimo que demuestra un par de correcciones de errores:
x=["1\t2\t3","4\t5\t6","1\t2\t0","1\t2\t31"]
a=[y.split('\t')[0] for y in x]
b=[y.split('\t')[1] for y in x]
c=[y.split('\t')[2] for y in x] # this line is probably the problem
colors=['#FFFF00']*32
newarray=[colors[int(i)] for i in c]
print newarray
a) colors
tiene que ser de 32 entradas de largo. b) los elementos de c (i
) en la lista de comprensión deben convertirse a enteros (int(i)
).
el conjunto llamado c tiene alrededor de 6000 elementos, todos los valores enteros entre 0 y 31. –
Quizás deba explicar exactamente lo que está tratando de hacer. Fuera de contexto, no entiendo por qué la lista callec 'c' tendría 6000 valores enteros en el rango de 0 a 31 –