| 
 | 
 
 
发表于 2024-5-29 18:00:01
|
显示全部楼层
 
 
 
 本帖最后由 jackz007 于 2024-5-29 22:18 编辑  
 
     先澄清一个概念,序列型数据的索引一般都是从 0 开始的,所以,一个有 3 个元素列表的有效索引值的范围是 0 - 2,也就是 0,1,2,当试图用索引 3 去访问一个只有 3 个元素的列表时,一定会遭遇下标越界的错误。 
 
- a = [1,2,3]
 
 - for i in a:
 
 -     a[i] = [0] * 3
 
 - print(a)
 
  复制代码 
    为了方便找到问题,我们把循环进行分解 
- a = [1,2,3]
 
 - for i in a :        # 第 1 次循环 i 将索引到 a[0],也就是数值 1
 
 -     a[i] = [0] * 3  # 执行过此句后,a[1] 由数值 2 变为 [0 , 0 , 0],于是,a 变为 [1, [0 , 0 , 0] , 3]
 
 - for i in a :        # 第 2 次循环 i 将索引到 a[1],也就是 [0 , 0 , 0] 
 
 -     a[i] = [0] * 3  # i 是 [0 , 0 , 0],那么,a[i] 就是 a[[0 , 0 , 0]],这就是出错的原因,列表的索引必须是整型数,不可以是列表。  
 
 - . . . . . .
 
  复制代码 
 |   
 
 
 
 |