python,这个简单的代码哪里出错了

python,这个简单的代码哪里出错了

问题描述:

目的是生成一个杨辉三角,报错显示索引越界,但感觉并没有

def triangles():
    a=[1]
    for i in range(2,11):
        b=a[:]
        a=[b[j]+b[j-1] if j<i and j>1 else 1 for j in range(1,i+1)]
        yield a 
        print(a)
        
for b in triangles():
    pass

img

a=[b[j]+b[j-1] if j1 else 1 for j in range(1,i+1)]
改成
a=[b[j-1]+b[j-2] if j1 else 1 for j in range(1,i+1)]

第一轮循环之后,a 还是【1】,所以当 i=3,j=2时,b【j】会报错。

i=2的时候,b=[1],j大于0,b[j]都会超索引