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]作为索引。 解决方式:老老实实用中间变量