刷题时遇到的一个奇葩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]作为索引。
解决方式:老老实实用中间变量
在我印象里a,b = b,a这种写法是原子操作,不涉及顺序问题。检查了半天没找到原因,最后去翻文档,发现这种写法会先计算等号右侧的值生成元组,作为语句执行前的镜像,而在赋值时等号左侧是从左到右逐个进行的,当赋值到a[a[0]]时,a[0]的值已经被改变了,会使用最新的a[0]作为索引。
解决方式:老老实实用中间变量
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
09-24 10:27
焦作工贸职业学院 Java
我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊 点赞 评论 收藏
分享
11-03 18:30
湖南大学 游戏策划
嵌入式的小白:其实说句实话,这个福利背后是后一套逻辑的
1.公司食堂提供免费的早餐,但不会提供到比如10点,这样大家就会早点来公司
2.食堂提供宵夜,也是同样的道理,想让员工晚上加班
3.提供健身房,也是希望看能不能把大家吸引来周末加班
4.有宿舍的,这个宿舍一般不会很远的,缩短在路上的耗时,更多的时间就放在公司上了
巨人网络公司福利 91人发布 点赞 评论 收藏
分享