为什么这段Python代码会出现String index out of range索引错误
报错底层逻辑说明
你的代码触发报错的核心原因是多了一层多余的下标访问,对空字符串执行了超出长度的下标取值,具体执行过程拆解如下:
- 你定义的
board是二维列表结构,遍历得到的每个row已经是一维列表,row[0]取到的就是当前行的第一个元素,本身就是字符串类型,不再是列表 - 第一次循环取第一行的
row[0]得到字符串'X',长度为1,此时你再取[0]能正常拿到字符'X',不会报错 - 第二次循环遍历到第二行
['','','O','O'],row[0]取到的是空字符串'',长度为0,此时执行row[0][0]相当于试图取空字符串的第0位字符,直接触发String index out of range越界报错
修正方案
如果你的需求是仅打印整个二维矩阵第一行的第一个元素,不需要写循环,直接通过两层下标取值即可:
print(board[0][0])
如果你是要在循环场景下验证逻辑,需要先判断字符串长度再取值,避免空字符串越界:
for row in board: first_item = row[0] if len(first_item) > 0: print(first_item[0])
内容的提问来源于stack exchange,提问作者Lassom
相关产品推荐
相关产品推荐

