为什么显示“列表索引超出范围”?

问题描述

n = int(input())
students = list()
for i in range(0,n):
    students[i][0]=input("Name: "); students[i][1]=float(input("Grade: "))

我写了这段代码,但显示“列表索引超出范围”。我不明白为什么会这样。

    ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-46-966bd0f334a2> in <module>
      1 n = int(input())
      2 for i in range(0,n):
----> 3     students[i][0]=input(); students[i][1]=float(input())

IndexError: list index out of range

请帮忙。

解决方法

您的代码不起作用的原因是您试图在 students[i] 是空列表时分配 students。同样,当 students[i][0] 甚至不存在时,您尝试分配 students[i][1]students[i]

解决方案很简单:不是分配给列表 (x[1] = 3),而是附加到列表 (x.append(3))。

n = int(input())
students = list()
for i in range(0,n):
    students.append([]) # Must add empty list otherwise students[i] doesn't exist
    students[i].append(input("Name: ")); students[i].append(float(input("Grade: ")))
    
print(students)
# Prints [['a',1.0],['b',2.0],['c',3.0]]
# after inputting 3,a,1,b,2,c,3