2012-08-28 64 views
3

目前,我试图同时重新定义python中的两个变量。例如,我有基础案例Python同时变量增量

p = 3 
q = 2 

和我要重新定义p和q,使得

p = p+2q 

q = p+q 

因此,p和q的元组应当是(p,q)=(3,2)然后(7,5)然后(17,15)等等。我不知道如何同时重新定义这些变量。

当然,下面的代码将工作:

p = 2 
q = 3 
temp = [0,0] 

while True: 
    temp[0] = p + 2q 
    temp[1] = p+q 
    p = temp[0] 
    q = temp[1] 
    print(p,q) 

,但我希望避免temp列表。有没有更漂亮,更蟒蛇式的方式来做到这一点?

回答

10
>>> p = 2 
>>> q = 3 
>>> p, q = p + 2 * q, p + q 
>>> print p 
8 
>>> print q 
5 
>>> 

您还可以添加可选的括号:

(p, q) = (p + 2 * q, p + q) 
+0

打我给它,有一个给予好评:) – jaypb

+0

是的,我总是喜欢添加父母只是为了可读性而着迷。 – arshajii

+0

谢谢!这正是我所期待的。 –

5

见下

p = 2 
q = 3 

while True: 
    p, q = (p + 2*q, p + q) 
    print(p, q) 
1
p = p + 2*q 
q = q + p - 2*q 

代码这种方法应该工作

+0

是吗?你仔细检查过? –

+0

IMO不太清晰的缺点。对于元组方法不可用的C或其他语言来说,这可能是更好的解决方案。 – jaypb

+0

@BaylesJ这不是关于清晰度(它也不会在C中工作),这里当python进入第2条语句时,'p'的值已经改变了,现在'q'将会有一个按照新的' p'。 –