斐波那契立方体
Cube for Fibonacci
以下代码有问题,看来我遇到了 list 或 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())
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'
您可能想要替换
fb.append([fibonacci(i-1)+fibonacci(i-2)])
和
fb.append(fibonacci(i-1)+fibonacci(i-2))
现在,您正在将一个以标量作为输入的函数映射到一个包含数字(例如 0 和 1)以及列表(例如 [1])的列表。
你应该确定你想要什么 fibonacci()
到 return。看起来您希望它成为 return 列表,因为您将结果传递给 map()
。如果是这样,递归调用也会 return 一个列表,这一行真的没有意义:
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()
应该可以工作了。
以下代码有问题,看来我遇到了 list 或 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())
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'
您可能想要替换
fb.append([fibonacci(i-1)+fibonacci(i-2)])
和
fb.append(fibonacci(i-1)+fibonacci(i-2))
现在,您正在将一个以标量作为输入的函数映射到一个包含数字(例如 0 和 1)以及列表(例如 [1])的列表。
你应该确定你想要什么 fibonacci()
到 return。看起来您希望它成为 return 列表,因为您将结果传递给 map()
。如果是这样,递归调用也会 return 一个列表,这一行真的没有意义:
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()
应该可以工作了。