python - 从元素本身生成索引的数组的Python交换不起作用
问题描述
跟随python交换不起作用,问题是为什么!
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
解决方案
下面是一个例子来说明为什么该语句不起作用。
>>> 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 上,所以根本没有交换发生。
推荐阅读
- discord.py - 将不和谐用户的头像和昵称复制到机器人
- android - Flutter 播放器不会播放来自 podbean 的音频
- php - 方法 Illuminate\Support\Collection::orWhere 不存在
- c# - 两个对象在 Unity 中不断获得相同的随机数
- excel - 如何描绘,过滤一些单元格,然后在 VBA 中连接?
- reactjs - Axios 发送错误的令牌
- android - 构建/部署 Android 应用程序时是否应该已经创建 SQLite 表?
- r - ggplot 中的颜色和形状编码
- angular - 如何在 Angular 10 中使用文件替换
- javascript - 验证给定的 MS 参数