Python中是否有交换两个变量的标准化方法?

2024-03-29 14:46:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我看到两个变量值使用以下语法交换:

left, right = right, left

这被认为是交换两个变量值的标准方法吗?还是有一些其他方法,按照惯例,最常交换两个变量?


Tags: 方法right标准语法left惯例
3条回答

这是交换两个变量的标准方法,是的。

Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.

http://docs.python.org/3/reference/expressions.html#evaluation-order

这意味着表达式a,b = b,a如下:

  • 计算右边的b,a,也就是说,在内存中创建两个元素的元组。这两个元素是由标识符ba指定的对象,这些标识符在程序执行过程中编码指令之前就存在
  • 就在创建这个元组之后,还没有对这个元组对象进行赋值,但这无关紧要,Python内部知道它在哪里
  • 然后,计算左手边,也就是说元组被分配到左手边
  • 由于左侧由两个标识符组成,因此将元组解包,以便将第一个标识符a分配给元组的第一个元素(这是在交换之前由于名称b而在形式上是b的对象)
    第二个标识符b被分配给元组的第二个元素(这是交换前的对象,因为它的标识符是a

这个机制有效地交换了分配给标识符ab的对象

因此,回答您的问题:是的,这是交换两个对象上的两个标识符的标准方法。
顺便说一下,对象不是变量,它们是对象。

我知道三种交换变量的方法,但是a, b = b, a是最简单的。有

异或(整数)

x = x ^ y
y = y ^ x
x = x ^ y

或者简洁地说

x ^= y
y ^= x
x ^= y

临时变量

w = x
x = y
y = w
del w

元组交换

x, y = y, x

相关问题 更多 >