Skip to main content
 首页 » 编程设计

python之映射和 lambda 函数

2025年05月04日13kenshinobiy

我目前正在做一个 hackerrank 问题。

目标是找到前 n 个斐波那契数的立方体。用户输入n。例如,如果用户输入 5,则输出应该是 [0, 1, 1, 8, 27],因为前五个斐波那契数是 [0, 1, 1, 2, 3]。

我写了下面的代码:

cube = lambda x: x**3 # complete the lambda function  
 
def fibonacci(n): 
    # return a list of fibonacci numbers 
    initiallist = [] 
    for i in range(n): 
        if i < 2: 
            initiallist += [i]           
        else: 
            initiallist += [initiallist[-1] + initiallist[-2]] 
    return initiallist 

我得到了以下代码(我无法编辑):

if __name__ == '__main__': 
    n = int(input()) 
    print(map(cube, fibonacci(n))) 

问题是我的代码没有通过测试用例,因为它返回的是 map 对象而不是列表。我如何确保它返回一个列表?

请您参考如下方法:

只需添加list(),

if __name__ == '__main__': 
    n = int(input()) 
    print(list(map(cube, fibonacci(n)))) 

我取消了我的评论,因为这是映射对象的解决方案,我不认为你可以在实际调用之前修改它。正如 Ewoud 所说,map 函数在 python3 和 python2 中的行为不同。