def triangles(): list = [0, 1, 0] yield list[1:-1] for i in range(9): former_list = list.copy() #这个地方必须要用copy方法,不然former_list和list都指向同一个列表 length = len(former_list) print(length) for j in range(length - 1): list[j + 1] = former_list[j] + former_list[j + 1] list.append(0) yield list[1:-1]
本来很简单的思路,想到在首尾加一个0,用迭代的方法生成每行的list,但是一直出现奇怪的错误。
经过仔细排查,问题就处在这一行:
former_list = list.copy() #这个地方必须要用copy方法,不然former_list和list都指向同一个列表
开始我的写法是 :
former_list = list
这样做的后果就是并没有实现former list的存储,两个变量指向的是同一个list。(仅仅只是增加了一个对list的引用)。必须要加copy才能能够实现list的拷贝,否则容易出现难以预料的错误。
Sign in to make a reply
官总gg
本来很简单的思路,想到在首尾加一个0,用迭代的方法生成每行的list,但是一直出现奇怪的错误。
经过仔细排查,问题就处在这一行:
开始我的写法是 :
这样做的后果就是并没有实现former list的存储,两个变量指向的是同一个list。(仅仅只是增加了一个对list的引用)。必须要加copy才能能够实现list的拷贝,否则容易出现难以预料的错误。