http://i.imgur.com/MRT8fzD.jpg
如题 当我把l这个list
用append加入到自己的最后一个位置时
然后就变成
l最后一个元素等于自己l本身
而不是变成[1,2,3,[1,2,3]]
造成l里面有l里面有l里面有l...(无止尽)
我用id去确认
发现l和l[-1]和l[-1][-1].....的id都一样
我的问题有以下几个:
1.后来我用l.pop()
却发现l不是空list
而是[1,2,3]
如果照"最后一个元素等于自己本身"的逻辑
那么不是应该要全空吗
2.像这种无止尽的索引
l[-1][-1][-1][-1][-1][-1][-1]....
最多能索引几次?
3.为何会造成这样的现象呢?
新手发问 请前辈们指导一下 感谢qaq
作者:
chababa (洽八八)
2017-07-17 11:15:00l = l + l
第1个问题逻辑有点跳跃,你是怎么推出全空的?L本来是[1, 2, 3, L],pop出L后变成[1, 2, 3]很合理阿?
2.无限次 3.你需要学一下指标和 Linked List
作者:
Sunal (SSSSSSSSSSSSSSSSSSSSSSS)
2017-07-18 10:46:00去看一下C++的参考 (reference)
看来这个问题攸关于c 而不是单纯地学会python就懂的事情所以推荐学python时要一起学c吗 是这样吗
作者: edwar (海边的野孩子) 2017-07-18 13:48:00
是说为什么要把l加在l的后面?
作者:
zerof (猫橘毛发呆雕像)
2017-07-18 13:53:00pass by reference.
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-07-18 15:44:00跟 C 没有关系吧, 也不是 pass by reference 不要乱教..
作者:
zerof (猫橘毛发呆雕像)
2017-07-18 17:45:00作者: TaiwanFight 2017-07-18 18:15:00
简单来看就是浅复制跟深复制的差别而已啊改用 L.append(L.copy()) 即可小妹是建议原波抽空自己写一个语言啦 免得被python折磨 厂厂
作者:
Sunal (SSSSSSSSSSSSSSSSSSSSSSS)
2017-07-18 20:49:00没人说学py前要先学c 但是针对原po过往的问题 学c应该很多比较快乐些
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-07-18 21:10:00@zerof: By reference 和 by value 的差异不是这样看的这个议题去 Google 就有一堆资料, 可以试着研究看看
Python的所有行为都是pass by object reference 你举的例子都符合呀
作者:
s860134 (s860134)
2017-07-19 02:03:00我记得书上是说根据传入参数 mutable/immutable 来分当然你说最底层的实做是用 C 一定是指标只来只去拉...
作者:
zerof (猫橘毛发呆雕像)
2017-07-19 02:06:00认知就是 by ref, 你要不要贴个参考资料说它不是?