m0_64278797 2022-06-13 01:37 采纳率: 80%
浏览 35
已结题

为什么这两个print输出的不一样?(语言-python)

his是两个list拼成的list,其中第二个list就是now,FS()是自定义函数,FS(now[2],gl)的值正是[5,3]
但是
a=[1]
b=[]
print(b)
b+=[a]
b=b+[a]
print(b)
a=[2]
print(b)
就没有这个问题

img

img

  • 写回答

1条回答 默认 最新

  • 於黾 2022-06-13 07:57
    关注

    因为list是个可变值类型
    你的his既然是包含了now的
    那么你修改了now,his也就跟着变了
    而你上面的那个代码
    后面a=[2]把a指向了一个新的地址,就跟add进b里的a不是同一个对象了
    换句话说,a=[2]和a.clear();a.append(2)是不等价的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日