Python交换两个变量的值

问题

python交换两个变量的值很简单:

x, y = y, x

复制号右侧的元祖会首先计算内部的值,然后安装从左到右的顺序,依次赋值给赋值号右侧的变量。

有一种情况需要注意:

 如图,交换下标为0的数字2和下标为2的数字4。返回的结果却不如我所愿,Why?

原因

首先赋值号右边的内容先计算,为元祖(4, 2),这一步没有错。之后(4,2)会依次赋值给左侧变量。

首先l[0] = 4,之后再赋值l[l[0]],这时l[0]已经被覆盖为4,故此处赋值的是l[4],也就是数字6的位置。

就是因为这个原因,出现了上述问题。

解决

古法换值

temp = l[0]
l[0] = l[temp]
l[temp] = temp

总结

出现这种问题的原因还是因为列表属于可变类型,l[l[0]]的下标l[0]会在运行过程中变化。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 22:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 22:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 22:02:02       82 阅读
  4. Python语言-面向对象

    2024-04-25 22:02:02       91 阅读

热门阅读

  1. IOS恢复

    IOS恢复

    2024-04-25 22:02:02      32 阅读
  2. 自定义sink

    2024-04-25 22:02:02       35 阅读
  3. 解决Gradle依赖冲突:排除特定版本依赖

    2024-04-25 22:02:02       27 阅读
  4. 7-云原生监控体系-PromQL-函数功能和示例

    2024-04-25 22:02:02       33 阅读
  5. 简洁易懂递归 | 力扣124.二叉树中的最大路径和

    2024-04-25 22:02:02       28 阅读
  6. socket编程实现TCP通信

    2024-04-25 22:02:02       39 阅读
  7. Day20-Python基础学习之正则表达式和递归(完结)

    2024-04-25 22:02:02       32 阅读
  8. css八股

    2024-04-25 22:02:02       33 阅读
  9. verilog 语法及特点

    2024-04-25 22:02:02       34 阅读