刷题时遇到的一个奇葩python问题

l        c41  其中有一步大概是把数组中的i交换a[i]的操作,就是[1,0] 交换完变[0,1]这种a[i]==[i]的形式。然后问题来了,当我用a[0], a[a[0]] = a[a[0]], a[0]语句交换后发现交换完了数组还是[1,0]。
        在我印象里a,b = b,a这种写法是原子操作,不涉及顺序问题。检查了半天没找到原因,最后去翻文档,发现这种写法会先计算等号右侧的值生成元组,作为语句执行前的镜像,而在赋值时等号左侧是从左到右逐个进行的,当赋值到a[a[0]]时,a[0]的值已经被改变了,会使用最新的a[0]作为索引。
         解决方式:老老实实用中间变量
全部评论

相关推荐

央企 技术中台 工作时间早八点半到晚上五点(不加班),给户口,第一年加上餐补房补接近30w。 硕士
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务