用异或实现数值交换

2019年11月6日 / 3次阅读 / Last Modified 2019年11月6日

代码界一直流传着使用三个异或的方式来交换两个变量的数值,既然我们已经学习了python的位运算,那就来试试这种酷酷的操作吧。

>>> a = 2
>>> b = 5
>>> a = a^b
>>> b = a^b
>>> a = a^b
>>> print(a,b)
5 2

成功!下面来分析一下这三个异或操作是如何实现数值交换的。

首先我们需要了解一个知识点:一个数自己与自己异或,结果位0:

>>> 12 ^ 12
0
>>> -12 ^ -12
0

因此,我们给上面那段代码加点注释:

>>> a = a^b
>>> b = a^b  # b = a^b^b = a which is the orginal value of a
>>> a = a^b  # a = a^a^b = b which is the orginal value of b

看明白了没?

我们可以使用分号,将这三行代码并入一行;我们还可以使用python独有的交换数值的方法,代码如下:

>>> a ^= b; b ^=a; a ^= b;  # swap by xor
>>> a,b = b,a  # swap again directly in python

交换连个变量的值数,在python中,就是如此简单。

-- EOF --

本文链接:https://www.pynote.net/archives/1464

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More

    麦新杰的Python笔记

    Ctrl+D 收藏本页


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top