m0_64278797 2022-06-13 01:37 采纳率: 100%
浏览 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日

悬赏问题

  • ¥15 workstation加载centos进入emergency模式,查看日志报警如图,怎样解决呢?
  • ¥50 如何用单纯形法寻优不能精准找不到给定的参数,并联机构误差识别,给定误差有7个?matlab
  • ¥15 workstation加载centos进入emergency模式,查看日志报警如图,没有XFS,怎样解决呢?
  • ¥15 应用商店如何检测在架应用内容是否违规?
  • ¥15 Ubuntu系统配置PX4
  • ¥50 nw.js调用activex
  • ¥15 数据库获取信息反馈出错,直接查询了ref字段并且还使用了User文档的_id而不是自己的
  • ¥15 将安全信息用到以下对象时发生以下错误:c:dumpstack.log.tmp 另一个程序正在使用此文件,因此无法访问
  • ¥15 速度位置规划实现精确定位的问题
  • ¥15 MAC虚拟机(win11)USB插上后无串口com,无法烧录