Discuss / Python / python列表的引用问题

python列表的引用问题

Topic source

官总gg

#1 Created at ... [Delete] [Delete and Lock User]
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的拷贝,否则容易出现难以预料的错误。


  • 1

Reply