为了账号安全,请及时绑定邮箱和手机立即绑定

本节示例中为什么重新赋值L之后,t的值也变了呢?

我对这一节的例子有一个疑问。

 >>> t = ('a', 'b', ['A', 'B']) 

>>> L = t[2] 

>>> L[0] = 'X' 

>>> L[1] = 'Y' 

为什么改变了L的值以后,t的值也跟着变了呢? 

我觉得 L = t[2]代表在内存中开辟名为L的list变量,L的第一个值指向t(2)[0],L的第二个值指向t(2)[1]。 在经过 L[0] = 'X' 以及L[1] = 'Y'之后,内存中新开辟两个位置,一个储存X,另外一个储存Y,然后将L重新指向这两个位置。

 不知道我的想法错在哪里?谢谢各位指教!

正在回答

1 回答

t[2]指向一个 list (实际上是一个内存地址)

L=t[2] 是将 L 指向该list

L[0]='X' 是将该list的0位的内存地址里面的数据替换为X ,而不是开辟新的位置

L[1]同理

0 回复 有任何疑惑可以回复我~
#1

lurenyi000 提问者

嗯,那为什么L[0]='X' 是将该list的0位的内存地址里面的数据替换为X ,而不是开辟新的位置呢? 比如我们写 a = 3 b = a 此时如果我写 b =4,则a的值是不变得;同样我a=4, b的值也是不变得。 我们就可以认为是内存新开辟一个位置,存放的值是4。然后将a或者b指向这个新开辟的位置。 请问以上这个例子和L[0]='X' 有什么不同呢?
2016-05-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

本节示例中为什么重新赋值L之后,t的值也变了呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信