Ошибка Python: «IndexError: список индексов вне диапазона» - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь поместить некоторые данные в мой «вложенный список».Я новичок, пожалуйста, объясните мне, спасибо всем.

n_list = []
n = int(input())
for i in range (0,n):
    print(i)
    name = input()
    n_list[i].append(name)
    val = int(input())
    n_list[i].append(val)
print(n_list)

Ответы [ 5 ]

0 голосов
/ 10 июля 2019

Этот работает.причины, по которым ваш метод не работает, это то, что вы идентифицировали индекс, который еще не существует

n_list[i]

список не имеет элементов.вот почему вам нужно добавить () новые.

n_list = []
n = int(input("write list length: \n"))
for i in range (n):
    item = [] #create the nested list for each loop

    name = input("Write name : \n")
    item.append(name)

    val = int(input("write value : \n"))
    item.append(val)

    n_list.append(item)

print(n_list)
0 голосов
/ 10 июля 2019

Проблема в том, что вы пытаетесь получить доступ к i -ому элементу пустого списка . Поскольку в списке 0 элементов, а вы запрашиваете i -й элемент, вы получаете ошибку.

Вы можете инициализировать список с фиктивными значениями

n = int(input())
n_list = n * [None]

, а затем напишите

n_list[i] = the_value
0 голосов
/ 10 июля 2019

Ошибка довольно проста и ожидаема, поэтому ничего страшного в этом нет.

The append function works in the following way (syntax):
    <list_name>.append(<item>)

- это имя списка и вставляемый элемент.

В вашем коде,

n_list[i].append(name)

Вы пытаетесь добавить в список, присутствующий в i-ом индексе n_list, который не существует.Так что показывает ошибку

0 голосов
/ 10 июля 2019

Как сказал Андроник, вам не нужно использовать индекс [i]. Но вы говорите о «вложенном списке». То, что вы пытаетесь сделать, не является «вложенным». Похоже, вы хотите создать список объектов ключ / значение:

n_list = []
n = int(input())
for i in range (0,n):
    print(i)
    name = input()
    val = int(input())
    n_list.append([name, val])
print(n_list)

Результат примерно такой: [['myname', 2], ['yourname', 3]] или как словарь:

n_list = []
n = int(input())
for i in range (0,n):
    print(i)
    name = input()
    val = int(input())
    n_list.append({'name': name, 'value': val})
print(n_list)

Результат примерно такой: [{'name': 'myname', 'value': 3}, {'name': 'yourname', 'value': 4}]

0 голосов
/ 10 июля 2019

Если вы добавляете в список, вам не нужно использовать индекс (при использовании n_list[i] вы указываете на i-й элемент массива):

n_list = []
n = int(input())
for i in range (0,n):
    print(i)
    name = input()
    n_list.append(name)
    val = int(input())
    n_list.append(val)
print(n_list)

I youхотите вложить списки, сделайте это:

n_list = []
n = int(input())
for i in range (0,n):
    print(i)
    inner_list = []
    name = input()
    inner_list.append(name)
    val = int(input())
    inner_list.append(val)
    n_list.append(inner_list)
print(n_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...