Discuss / Python / 代码释疑

代码释疑

Topic source

def tri(max): L=[1,] for i in range(1,max+1):##三角共有max行,故需要循环max次,生成list

##第i行列表包含的元素个数为i
    yield L
    temp=[]
    for j in range(1,i):###第i行的列表是第i-1行的元素两两相加得到的,
        temp=temp+[L[j-1]+L[j]]
    L=[1,]+temp+[1,]

for i in tri(8): print(i)

我写的这段代码能够得到正确的结果,但是我认为在第二个for循环中temp=temp+[L[j-1]+L[j]] 会有下标越界的情况出现才对。例如,当第一层循环的i=2时,第二层循环j=1,2,当j=1时,temp=temp+[L[0]+L[1]],然而此时的L仅有第一排,即L=[1],所以下标越界应该报错才对


  • 1

Reply