杨辉三角形,最后语句超出索引范围


a = [1]*10
for i in range(len(a)):
    a[i] = [1]*(i+1)
for x in range(len(a)):
    print(a[x])
    for y in range(len(a)):
        if ya[x+1][y+1] = a[x][y]+a[x][y+1

最后的语句为什么会超出索引范围啊
Traceback (most recent call last):
File "D:/python/p25杨辉三角形.py", line 24, in
a[x+1][y+1] = a[x][y]+a[x][y+1]
IndexError: list index out of range

y取值最大值为长度减去1,那么y+1就等于a的长度,作为下标就越界了。因为下标范围是0-长度减去1

找到原因了,因为a的索引值就到9,所以到最后一次循环a[x+1][y+1] = a[x][y]+a[x][y+1],这个语句就已经超出范围了,我在外层的循环检测X=9就跳出循环,就不会报错了

a = [1]*10
for i in range(len(a)):#生成一个递增的二维列表
    a[i] = [1]*(i+1)
for x in range(len(a)):
    print()
    for z in a[x]:  #目的是去掉列表的中括号
        print(z,end='   ')       
    if x ==9:# x=9的时候跳出循环,不在执行内层循环,防止a[x+1][y+1]超出索引范围
        break
    for y in range(len(a)):
        if y<x:
            a[x+1][y+1] = a[x][y]+a[x][y+1] #计算下一层的值