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

对于赋值有疑问

rangking=['Adam','Lisa','Bart',]
L=rangking
rangking.insert(2, 'Paul')
print(rangking)
L.append('Paul')
print(L)
的输出结果是
['Adam', 'Lisa', 'Paul', 'Bart']
['Adam', 'Lisa', 'Paul', 'Bart', 'Paul']
但是
rangking=['Adam','Lisa','Bart',]
L=rangking
rangking.insert(2, 'Paul')
L.append('Paul')
print(rangking)
print(L)
的结果是
['Adam', 'Lisa', 'Paul', 'Bart', 'Paul']
['Adam', 'Lisa', 'Paul', 'Bart', 'Paul']


正在回答

2 回答

感谢你的认真思考和举一反三,我也想到了同样的问题,谢谢!

0 回复 有任何疑惑可以回复我~
L.append('Paul')放在print前面就会出现这种情况啊,系统按照顺序一行一行走完


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

慕尼黑9823340 提问者

谢谢,实际上从答案往回推我也是这样想的,但是之前3-4提到, a = 'ABC' b = a a = 'XYZ' print b 结果输出是ABC不是吗?那我这边的ranking和L不也是同理吗?不论print(rangking)放哪儿应该都要出现第一个情况才对呀?就像 a='ABC' b=a a='XYZ' print(b) print(a) b=b+'E' print(b) 输出的结果是 ABC XYZ ABCE a和b不是应该互不干扰吗?
2019-02-24 回复 有任何疑惑可以回复我~
#2

慕尼黑9823340 提问者

实际上我自己也试过,只要后面再加个ranking=...就行,就像这样 rangking=['Adam','Lisa','Bart',] L=rangking rangking=['Adam','Lisa','Bart'] rangking.insert(2, 'Paul') L.append('Paul') print(rangking) print(L) 也做到了互不干扰。但是我就是不懂这个原理是什么。虽然有点钻牛角尖了,但是真的想知道,求哪位大神可以帮帮忙。刚开始学感觉能做但是理解不了真的很难受
2019-02-24 回复 有任何疑惑可以回复我~
#3

qq_成不了冰了_0 回复 慕尼黑9823340 提问者

字符串在内存中会新开辟一块空间,所以a重新指向新的地址值,b保持不变。但是list集合的始终是在一个空间上操作。
2019-03-11 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

对于赋值有疑问

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