Discuss / Python / 交作业,是参考楼下的某个同学的。

交作业,是参考楼下的某个同学的。

Topic source
    result = [1]
    while True:
        yield result
        L = []   # 初始化列表
        L = [result[i-1] + result[i] if i >=1 else result[0] for i in range(len(result))]      # 获取列表前len(L)-1个值
        L.append(1)  #追加最后一个值
        result = L

想了半天,第一个是range的取值从0开始,这样的话需要 i >=1 即第二个的时候会效。难处理的点得想明白就是,第二轮循环进来的时候,这个时候result的确还是长度为1,i取值为0的时候,L[0]=result[0]=1 reslut即为[1,1]  第三轮都是时候,就是 完全理解了  i取0 1 2   则就是 result =  [result[0], result[0]+result[1], 1]

第一轮:  长度为1  list的range只有0  所以归为else result[0]就输出[1]但接下来append了1  所以第二轮就是[1,1]

第二轮:  长度为2 所以range有0 1 , 0先得出result[0]  ,  1符合if i>=1所以走result[1-1]+result[1]  得出2  目前是[1,2] 加上append(1)所以第三轮结果为[1,2,1]

第三轮:  长度为3  range为0 1 2,  0和同上  而1则result[1-1]+result[1]  list的第一个元素和第二个元素相加得出3,  2则是result[2-1]+result[2]为3  最后通过append  第四轮结果为1,3,3,1

因为这道题想了很久还是没理解 所以将细节步骤写在这里  想问下是否正确....

受教了受教了


  • 1

Reply