「已注销」 2021-08-15 17:40 采纳率: 100%
浏览 116
已结题

为啥Python交换两个变量的结果不同?(主要是想知道Python交换两个变量的原理)

例子如下:

a = [0, 2, 1, 3, 5, 6]

b = a[:6]  # 浅复制,生成一个与 a 内容相同的列表

a[1], a[a[1] + 1] = a[a[1] + 1], a[1]  # 第一种交换

b[b[1] + 1], b[1] = b[1], b[b[1] + 1]  # 第二种交换

print("第一种交换方式:", a)
print("第二种交换方式:", b)


运行结果:

第一种交换方式: [0, 3, 1, 3, 2, 6]
第二种交换方式: [0, 3, 1, 2, 5, 6]

  • 写回答

4条回答 默认 最新

  • 关注

    a[1], a[a[1] + 1] = x,y

    等同于

    a[1] = x
    a[a[1] + 1] =y

    先对a[1] 赋值 x
    之后执行a[a[1] + 1] =y时再读取a[1]就是赋值之后的了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月15日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价