【问题标题】:Python simultaneous variable incrementationPython同时变量递增
【发布时间】:2012-08-28 22:43:47
【问题描述】:

目前,我正在尝试在 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 列表。有没有更漂亮、更类似于 python 的方式来做到这一点?

【问题讨论】:

    标签: python variables simultaneous


    【解决方案1】:
    >>> p = 2
    >>> q = 3
    >>> p, q = p + 2 * q, p + q
    >>> print p
    8
    >>> print q
    5
    >>> 
    

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

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

    【讨论】:

    • 是的,为了便于阅读,我总是喜欢添加括号。
    • 谢谢!这正是我想要的。
    【解决方案2】:

    请看下面的代码

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

    【讨论】:

      【解决方案3】:
      p = p + 2*q
      q = q + p - 2*q
      

      这个方法应该可以的

      【讨论】:

      • 是吗?你有仔细检查过吗?
      • IMO 清晰度较低的缺点。对于 C 或其他元组方法不可用的语言来说,这可能是一个更好的解决方案。
      • @BaylesJ 这与清晰度无关(它在 C 中也不起作用),这里当 python 进入第二条语句时,p 的值已经改变,现在q 将有根据新的p 的值。
      • @PierreGM:我知道这很丑,而且顺序很重要。老实说,我不知道 p,q = (f(p,q),g(p,q)) 在相同的环境中执行。我很高兴我学到了新东西:)
      • @AshwiniChaudhary,我认为编辑更清楚:这个例子确实有效(现在)由于消除了添加到 p 的偏移量。我只是认为发生了什么不太明显,所以即使它是正确的,我也不会在 Python 中这样做(可能的其他语言)。
      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 2013-05-27
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多