疑惑待解答
Topic source昨天我也遇到了同样的问题,而且我还用了pop,今天终于搞明白了。因为外面的results的内容其实是指向了triangles函数里面的tl上次调用所指向的list,如果在后面的调用中直接append或者pop tl里面的内容,就相当于修改了results里面的内容,所以结果会错误。但是改成tl=tl+[1]后,tl+[1]运算会生成一个新的list,相当于后面调用中的tl指向了一个新的list,和results里指向的list不再是同一个list了,这样就不会互相干扰了。不知道我这样说明白了没有,反正我是明白了。其实,老师在前面的内容里也强调了,python里面的变量其实是指向了一个目标,变量赋值其实是变量指向的调整,我觉得相当于C语言里面的指针操作,或者可以理解成这python的变量是全指针操作的。
- 1
用户7734702421
l=[1]
tl=[1]
k=1
while True:
yield tl
l=tl
tl.append(1)
while k<len(tl)-1:
tl[k]=l[k-1]+l[k]
k=k+1
k=1
为什么上面这串代码运行后只重复输出第九行的值,但是把tl.append(1)改成tl=tl+[1]就能正确输出了呢,请问有谁能解答一下吗?