首页 > 解决方案 > 从元素本身生成索引的数组的Python交换不起作用

问题描述

跟随python交换不起作用,问题是为什么!

nums[i], nums[nums[i]-1] = nums[nums[i]-1],  nums[i]

标签: pythonarraysswap

解决方案


下面是一个例子来说明为什么该语句不起作用。

>>> nums=[3,2,3,4,6,5]
>>> i=4
>>> nums[i],nums[nums[i]-1] = nums[nums[i]-1], nums[i]
>>> nums
[3, 2, 3, 4, 6, 5]

当 i 为 4 时,swap 的右边部分变成一个元组 (5,6),它首先将 5 分配给 nums[4],然后 nums[nums[i]-1] 实际上是 nums[5-1]回到 nums[4] 并赋值为 6。

所有的分配都发生在索引 4 上,所以根本没有交换发生。


推荐阅读