Amazing Python::Swap Easy!
在一个程序里面,比较常见的操作便是Swap了。把两个或者多个变量的值进行交换,我们都做过这种程序,不管是高手还是新手。
常见的解决方案是:(c/c++/java)
//swap a and b
temp=a;
a=b;
b=temp;
很显然,我们需要一个临时变量来帮助我们实现这个过程。或者临时指针或者其他的方案。
让我们来看看Python下的swap:
a,b = b,a
Well,我们可以不用那个临时变量了。也没省多少力气?那看看下面这个:
>>> a,b,c,d,e = 1,2,3,4,5
>>> print a,b,c,d,e
1 2 3 4 5
>>> a,b,c,d,e = b,d,e,c,a
>>> print a,b,c,d,e
2 4 5 3 1
WOW!可以看到,这个程序就想我们想象中的问题一样简单!呃,我是说,这个过程更接近我们脑海里面的东西。(当然如果常年的编程使得您具备了机器的思维,那么可能你不会这么想……我们称之为退化)
是什么让Python下的Swap变得如此简单?Python更聪明?我们知道,这只是Python特殊的元组(tuple)机制,在简单的表达式背后,运行的是一个打包解包的过程。赋值符左边的元素分别被赋予右边对应位置的元素的值。实际上,如果要准确的表达这个概念,我们可以把表达式写作:
(a,b,c,d,e) = (b,d,e,c,a)
圆括号不是必须的,我们通过逗号来分割元素,而这个过程是一个多赋值,只不过在这里我们用多赋值来实现了Swap的功能而已。这个机制很有意思,我头一次用如此简洁优美的格式实现变量值的交换。(使用其他语言的库函数或模板除外,虽然我们看不到具体实现过程,但我知道这个过程没有这么美……)
我已经有些迫不及待的深入Python世界了,但是我知道这样不行,就像游泳之前,至少先做做准备活动,弄湿自己再说。
夜了,睡吧……Night,Amazing Python!
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=328222


Recent Comments