我目前正在处理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)))


问题是我的代码未能通过测试用例,因为它返回的是地图对象而不是列表。我如何确保它返回列表?

最佳答案

只需添加list()

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


我不删除评论,因为这是map对象的解决方案,我认为您不能在实际调用之前对其进行修改。正如Ewoud所说,map函数在python3和python2中的行为有所不同。

关于python - 映射和lambda函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41785399/

10-11 23:10