映射与lambda函数

2024-09-29 22:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个黑客银行的问题。在

目标是找到第一个nFibonacci数的立方。用户输入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

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

^{pr2}$

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


Tags: thelambda代码用户目标列表returndef
3条回答

你可以把列表(…)放在它周围,所以

print(list(map(cube, fibonacci(n))))

(我还没有测试你的其余代码)

编辑:如果不想更改main函数,则必须更改print或map函数或使用python2。在

如果无法编辑main函数,则使用Python2.X而不是Python3.X。在Python3.X中,map()函数返回迭代器。在

这是[链接]https://docs.python.org/3/library/functions.html#map

只需添加list()

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

我撤销了我的评论,因为这是映射对象的is解决方案,我不认为你可以在实际调用之前修改它。正如埃伍德所说,map功能在Python3和Python2中的作用不同。在

相关问题 更多 >

    热门问题