list和变量的指向问题
t = ('a', 'b', ['A', 'B']) L = t[2] L[0] = 'X' L[1] = 'Y' print t a=2 r=('a','b',a) print r a=3 print r
问题1:这两段程序都是通过tuple,一个指向变量,一个指向list,为什么在list改变时tuple也随之改变,解释为指向未变,而在变量值改变时tuple不变?
问题2:a=3;这个过程不应该是在内存生成3,生成a,然后指向吗?和list类似?
t = ('a', 'b', ['A', 'B']) L = t[2] L[0] = 'X' L[1] = 'Y' print t a=2 r=('a','b',a) print r a=3 print r
问题1:这两段程序都是通过tuple,一个指向变量,一个指向list,为什么在list改变时tuple也随之改变,解释为指向未变,而在变量值改变时tuple不变?
问题2:a=3;这个过程不应该是在内存生成3,生成a,然后指向吗?和list类似?
2016-09-24
嗯,对于问题1,我觉得应该是L[2]指向的是列表,当列表的指向发生改变的时候,与tuple无关,所以列表中的元素可以改变。但r[2]指向的数字2.当变量a改变时,是又指向了数字3,相当于新生成了一个变量,与原来的变量已经无关了。可参考http://blog.csdn.net/longshenlmj/article/details/13773977
对于问题2,这个过程相当于新生成了变量,或者说是一个指向数字3的指针。对于指针的指向来说,可以说是类似的。
以上是我的一点理解,欢迎交流。
举报