使用"for x not in y"

hys*_*hal 1 python for-loop

我正在尝试创建一个执行Fibonacci序列的动态函数.它以哈希表开始,该哈希表将值分配给位置然后返回它.但是,如果该位置不在哈希表中,则代码将该值与该位置一起存储在哈希表中.这是代码:

 def dyn_fib(n):
     memo = {1:0, 2:1}
     if n <= 2:
         return memo[n]
     else:
         for n not in memo:
             memo[n] = memo[n-2] + memo[n-1]
     return memo[n]
Run Code Online (Sandbox Code Playgroud)

我所要做的就是编辑'else'语句以使用哈希表在哈希表中存储新值

memo[n] = memo[n-2] + memo[n-1] 
Run Code Online (Sandbox Code Playgroud)

对于尚未在备忘录中列出的任何位置"n",然后循环直到达到"n".我以为我可以用

 for n not in memo:
Run Code Online (Sandbox Code Playgroud)

但Geany说有语法错误.我认为这是因为如果n = 5,它需要在5之前计算3和4,但我不确定如何将"对于任何尚未在备忘录中的位置"放入python语句中.有人知道怎么做吗?(我觉得这很简单,但我不会精通Python.)

Joh*_*don 9

你通常不能说,for x not in y因为有无数个对象不在 y中.

对于您的具体情况,我认为这样的事情可能有效:

[x for x in range(0, n) if x not in y]
Run Code Online (Sandbox Code Playgroud)