You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

‘list index out of range’报错咨询及代码问题求助(编程新手)

解决Python列表索引越界(list index out of range)问题

嘿,刚学编程遇到这种报错真的太正常啦!别慌,咱们一点点拆解问题,把它搞定~

首先,你遇到的list index out of range错误,核心原因是你试图访问一个不存在的列表位置,咱们来看你的代码哪里出问题了:

问题1:空列表直接赋值索引

你一开始创建了空列表s = [],然后直接用s[i][j] = i*j去赋值——这时候s里连一行元素都没有,更别说第i行第j列的位置了,Python自然会告诉你“索引超出范围”。

问题2:循环范围的小坑

你用了range(1,x)range(1,y),这会导致循环次数比你输入的行列数少一次哦!比如你输入x=3(想要3行),range(1,3)只会循环1和2,也就是只跑2次,少了一行。


修正后的代码(两种直观写法)

写法1:先初始化二维列表(适合理解列表结构)

这种方法先提前创建好对应行列数的空框架,再填充数值:

x = int(input("Enter the row number"))
y = int(input("Enter the column number"))

# 先创建一个x行y列的二维列表,每个位置初始为0
s = [[0 for _ in range(y)] for _ in range(x)]

# 遍历每一行(i是列表的行索引,从0到x-1)
for i in range(x):
    # 遍历每一列(j是列表的列索引,从0到y-1)
    for j in range(y):
        # 用i+1、j+1是因为你要的是1开始的行列数值相乘
        s[i][j] = (i + 1) * (j + 1)

print(s)

写法2:逐行添加元素(更直观,新手友好)

这种方法先构建每一行的元素,再把整行加到二维列表里,不用提前初始化框架:

x = int(input("Enter the row number"))
y = int(input("Enter the column number"))

s = []
# 遍历你要的行号(从1到x)
for i in range(1, x + 1):
    current_row = []
    # 遍历你要的列号(从1到y)
    for j in range(1, y + 1):
        current_row.append(i * j)
    # 把当前行添加到二维列表中
    s.append(current_row)

print(s)

关键知识点总结

  • 列表不能直接给不存在的索引赋值:要么提前初始化好列表的结构,要么用append()方法逐步添加元素。
  • Python列表索引从0开始:你输入的行列数是从1开始的,所以要注意循环范围和实际数值的对应(比如用i+1来匹配你想要的行号)。

内容的提问来源于stack exchange,提问作者Tapasya.A

火山引擎 最新活动