【问题标题】:Assigning multiple variables within the same line in python在python的同一行内分配多个变量
【发布时间】:2021-12-01 21:27:57
【问题描述】:
def fibonacci(n):

    prev = curr = 1
    yield 1
    while curr < n:
        yield curr
        #1
        prev = curr 
        curr = curr + prev 
        #or
        #2
        prev ,curr = curr, curr + prev

我这里有这个斐波那契代码,但我不明白为什么当我分配时:

prev = curr #first
curr = curr + prev #second

fibonacci(10)

结果:1​​1248

当我分配时给出不同的答案

prev ,curr = curr, curr + prev 

fibonacci(10)

结果:1​​12358

这给出了正确的斐波那契数列。有人可以向我解释为什么会这样吗?

提前感谢您的意见。

【问题讨论】:

  • 在这第一个你基本上是在做curr = 2*curr
  • 试着逐行在纸上写下每一步的currprev的值。或者添加一些调试/打印行

标签: python fibonacci


【解决方案1】:

prev, curr = curr, prev+ curr 的作用类似于:

temp = prev + curr
prev = curr
curr = temp

但是你正在做的是将curr值设置为prev然后你基本上是在做curr = curr + curr(因为prev现在等于curr

【讨论】:

    【解决方案2】:

    因为第二个同时执行操作意味着对于curr = curr + prev,它使用您以前的prev,而不是prev = curr

    如果您想要后一个分配依赖于前一个的顺序分配,您应该尝试第一种方法。第二种方法是错误的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 2016-12-13
      相关资源
      最近更新 更多