Python 斐波那契立方体
在下面的代码中出现了问题,看起来我在列表或int操作中遇到了问题,所以我应该在哪里以及如何进行更改以更正此代码:Python 斐波那契立方体,python,list,integer,Python,List,Integer,在下面的代码中出现了问题,看起来我在列表或int操作中遇到了问题,所以我应该在哪里以及如何进行更改以更正此代码: cube = lambda x:x**3 def fibonacci(n): fb=[0,1] for i in range(2,n-1): fb.append([fibonacci(i-1)+fibonacci(i-2)]) return fb if __name__ == '__main__': n = int(input())
cube = lambda x:x**3
def fibonacci(n):
fb=[0,1]
for i in range(2,n-1):
fb.append([fibonacci(i-1)+fibonacci(i-2)])
return fb
if __name__ == '__main__':
n = int(input())
print(list(map(cube, fibonacci(n))))
Error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-9-761cca8f2b48> in <module>
7 if __name__ == '__main__':
8 n = int(input())
----> 9 print(list(map(cube, fibonacci(n))))
<ipython-input-9-761cca8f2b48> in <lambda>(x)
----> 1 cube = lambda x:x**3
2 def fibonacci(n):
3 fb=[0,1]
4 for i in range(2,n-1):
5 fb.append([fibonacci(i-1)+fibonacci(i-2)])
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
cube=lambda x:x**3
def fibonacci(n):
fb=[0,1]
对于范围(2,n-1)内的i:
附加([fibonacci(i-1)+fibonacci(i-2)])
返回fb
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=int(输入())
打印(列表(映射(立方体,斐波那契(n)))
错误:
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
7如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuuuu':
8 n=int(输入())
---->9打印(列表(地图(立方体,斐波那契(n)))
in(x)
---->1立方=λx:x**3
2 def斐波那契(n):
3 fb=[0,1]
对于范围(2,n-1)内的i,为4:
5 fb.附加([fibonacci(i-1)+fibonacci(i-2)])
TypeError:不支持**或pow()的操作数类型:'list'和'int'
您可能需要替换
fb.append([fibonacci(i-1)+fibonacci(i-2)])
与
现在,您正在将一个以标量作为输入的函数映射到一个包含数字(例如0和1)以及列表(例如[1])的列表上。您应该确定希望返回什么。看起来您希望它返回一个列表,因为您正在将结果传递给
map()
。如果是这样的话,递归调用也会返回一个列表,这一行实际上没有意义:
fb.append([fibonacci(i-1)+fibonacci(i-2)])
因为fibonacci(i-1)
和fibonacci(i-2)
也都是列表,但是看起来您希望这里的整数是加法的结果
因为您在函数中使用一个循环,并且有一个种子列表,所以不需要递归。只需索引到列表fb
:
def fibonacci(n):
fb=[0,1]
for i in range(2,n-1):
fb.append(fb[i-1] + fb[i-2])
return fb
n = 9
fibonacci(n)
# [0, 1, 1, 2, 3, 5, 8, 13]
有了它,多维数据集
map()
就可以工作了。当您遇到这样的问题时,您应该查看中间步骤,并确保它们是您所认为的。例如,这是否打印您认为应该打印的内容:print(斐波那契(5))
def fibonacci(n):
fb=[0,1]
for i in range(2,n-1):
fb.append(fb[i-1] + fb[i-2])
return fb
n = 9
fibonacci(n)
# [0, 1, 1, 2, 3, 5, 8, 13]