Skip to main content
 首页 » 编程设计

python之使用 "for x not in y"

2025年05月04日8cyq1162

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

 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] 

我所要做的就是编辑“else”语句以使用

将新值存储在哈希表中
memo[n] = memo[n-2] + memo[n-1]  

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

 for n not in memo: 

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

请您参考如下方法:

您通常不能说for x not in y,因为有无限多的对象不在y 中。

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

[x for x in range(0, n) if x not in y]