O índice da lista fora do intervalo de erro deve ter uma indicação de índice

votos
1

Eu tenho um nested_listque se parece com

[
    ['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']
 ]

(Minha real nested_listé uma lista muito longa). E eu tentei extrair 2 dados de cada sublista e aqui está o que eu fiz

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)

Isso me deu um list index out of rangeerro na linha de child_list.append(l[1]). No entanto, se eu mudar isso for l in nested_list:para for l in nested_list[:4]:ou qualquer intervalo que esteja dentro do período de nested_list, funcionou corretamente. Isso não faz qualquer sentido para mim. Alguém poderia me ajudar em encontrar onde está errado? Obrigado ~

Publicado 18/12/2018 em 11:05
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Se você está apenas interessado nos dois primeiros elementos, é uma maneira de usar try... except, outra maneira direta é para verificar o comprimento da lista da seguinte forma.

Desta forma você só acrescentar as listas onde o 1º eo 2º elemento existem.

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)
Respondeu 18/12/2018 em 11:34
fonte usuário

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