1个回答
展开全部
先解释第三行中中括号。
python的语法里面,中括号可以表示index。t[1] 就表示 t 这个 list 的第一项。
再解释 int 和 list 变量赋值的问题。
第三行中,l=t[1],意思就是给 t 这个 list 的第一项起了个别名叫做 l。
这就好比给张三起了个名字叫小明,下文里不论提到张三还是小明,说的都是同一个人。
那么在第四行里 l[0]='d' 其实就等价于 t[1][0] = 'd',相当于改变了list的内容。
这在编程里叫做aliasing,python 的 list 都是有aliasing的,但是 int (整数)没有。
所以,在第二段中,把 x 放到 m 这个 list 里的时候,只是拷贝进去了一个数值,从此以后和 x 不再有关联了。 这就好比做了个张三的克隆人,那个克隆人后来怎样,跟张三都没什么关系了。
第15-18行也是一样的道理。
如果,把那几行改为a=[4]; b=a; b[0]=5; print a; 这时就会打出5来了。
综上所述,造成第一段和第二段区别的主要原因就是它们涉及的数据类型不同,list = 起别名, int =克隆人。
python的语法里面,中括号可以表示index。t[1] 就表示 t 这个 list 的第一项。
再解释 int 和 list 变量赋值的问题。
第三行中,l=t[1],意思就是给 t 这个 list 的第一项起了个别名叫做 l。
这就好比给张三起了个名字叫小明,下文里不论提到张三还是小明,说的都是同一个人。
那么在第四行里 l[0]='d' 其实就等价于 t[1][0] = 'd',相当于改变了list的内容。
这在编程里叫做aliasing,python 的 list 都是有aliasing的,但是 int (整数)没有。
所以,在第二段中,把 x 放到 m 这个 list 里的时候,只是拷贝进去了一个数值,从此以后和 x 不再有关联了。 这就好比做了个张三的克隆人,那个克隆人后来怎样,跟张三都没什么关系了。
第15-18行也是一样的道理。
如果,把那几行改为a=[4]; b=a; b[0]=5; print a; 这时就会打出5来了。
综上所述,造成第一段和第二段区别的主要原因就是它们涉及的数据类型不同,list = 起别名, int =克隆人。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询