Python错误:“ IndexError:列表索引超出范围”

时间:2019-07-10 17:29:01

标签: python list

我正在尝试将一些数据放入“嵌套列表”中。 我是初学者,请解释一下,谢谢大家。

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 :(得分:0)

如果要追加到列表,则不需要使用索引(通过使用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)

我要嵌套列表,请执行以下操作:

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)

答案 1 :(得分:0)

该错误非常简单并且可以预见,所以没什么好难过的。

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

是列表的名称,是要插入的项目。

在您的代码中,

n_list[i].append(name)

您正在尝试追加到n_list的第i个索引中存在的列表,该列表不存在。因此,它显示了错误

答案 2 :(得分:0)

就像Andronicus所说,您不需要使用索引[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}]

答案 3 :(得分:0)

问题是您正在尝试访问列表中的第i项。由于该列表包含0个元素,并且您要求第i个元素,因此会出现错误。

您可以使用虚拟值初始化列表

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

然后写

n_list[i] = the_value

答案 4 :(得分:0)

这个正在工作。 您的方法不起作用的原因是因为您 识别尚不存在的索引

n_list[i]

该列表没有元素。这就是为什么您需要append()新的。

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)