índice de la lista de error de rango debe tener una indicación de índice

votos
1

Tengo una nested_listque se parece

[
    ['1', 'Casey', '176544.328149', '0.584286566204162', '0.415713433795838', '0.168573132408324'], 
    ['2', 'Riley', '154860.665173', '0.507639071226889', '0.492360928773111', '0.0152781424537786'], 
    ['3', 'Jessie', '136381.830656', '0.47783426831522', '0.52216573168478', '0.04433146336956'], 
    ['4', 'Jackie', '132928.78874', '0.421132601798505', '0.578867398201495', '0.15773479640299'], 
    ['5', 'Avery', '121797.419516', '0.335213073103216', '0.664786926896784', '0.329573853793568']
 ]

(Mi verdadero nested_listes una lista muy larga). Y traté de extraer 2 datos de cada sublista y esto es lo que hice

numerical_list = []
child_list = []
for l in nested_list: 
    child_list.append(l[1])
    child_list.append(float(l[2]))
    numerical_list.append(child_list)
print(numerical_list)

Esto me dio un list index out of rangeerror en la línea de child_list.append(l[1]). Sin embargo, si cambio que for l in nested_list:para for l in nested_list[:4]:o cualquier intervalo que está dentro de la longitud de nested_list, funcionó correctamente. Esto no tiene ningún sentido para mí. Podría alguien ayudarme en encontrar dónde está mal? Gracias ~

Publicado el 18/12/2018 a las 11:05
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Si están interesados sólo en los dos primeros elementos, una forma es utilizar try... except, de otro modo directo es para comprobar si la longitud de la lista de la siguiente manera.

De esta manera sólo anexar las listas en las que existen el primero y el segundo elemento.

numerical_list = []
child_list = []
for l in nested_list: 
    if len(l>=3):
        child_list.append(l[1])
        child_list.append(float(l[2]))
        numerical_list.append(child_list)
print(numerical_list)
Respondida el 18/12/2018 a las 11:34
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more