Python 映射与lambda函数

Python 映射与lambda函数,python,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 = [] f

我现在正在做一个黑客银行的问题

目标是找到第一个
n
Fibonacci数的立方体。用户输入
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
问题是,我的代码没有通过测试用例,因为它返回一个映射对象而不是列表。如何确保它返回列表?

只需添加
list()

我取消删除了我的评论,因为这是映射对象的解决方案,我认为在实际调用之前您无法修改它。正如Ewood所说,
map
函数在python3和python2中的作用不同。

只需添加
list()

我取消删除了我的评论,因为这是映射对象的解决方案,我认为在实际调用之前您无法修改它。正如Ewood所说,
map
函数在python3和python2中的作用不同。

您只需在其周围放置列表(…),因此

print(list(map(cube, fibonacci(n))))
(我还没有测试您的其余代码)

编辑:如果不想更改主函数,则必须更改print或map函数或使用python 2。

您只需在其周围放置list(…),以便

print(list(map(cube, fibonacci(n))))
(我还没有测试您的其余代码)


编辑:如果不想更改主函数,则必须更改打印或映射函数或使用python 2。

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


这里有[链接]

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


这里有[一个链接]

这会给你更多你需要的。为了以防万一,我添加了一些额外的位,比如循环和输入验证。希望这有帮助

通式 F(n)=F(n-1)+F(n-2)

获取用户输入

    def get_user_input():
        while True:
            try:
                nums_in_list = int(input("Enter the amout of numbers you want in the fibonacci list: "))

                if nums_in_list < 1:
                    print("Please enter a number greater than 0.")
                    continue

                return nums_in_list

            except ValueError:
                print ("Please enter an integer.")
循环程序的额外外接程序 主要部分: 调用上面定义的函数 显示输出

    if __name__ == '__main__':
        while True:
            original = genterate_list(get_user_input())
            print("Original Fabonacci")

            for x in original:
                print(x)

            cube_funtion = lambda value : value ** 3
            cube_result = map(cube_funtion, original)
            print("Cubed Values")
            list(map(print, cube_result))
            if loop_program() == "N":
                break

这会给你比你需要的更多。为了以防万一,我添加了一些额外的位,比如循环和输入验证。希望这有帮助

通式 F(n)=F(n-1)+F(n-2)

获取用户输入

    def get_user_input():
        while True:
            try:
                nums_in_list = int(input("Enter the amout of numbers you want in the fibonacci list: "))

                if nums_in_list < 1:
                    print("Please enter a number greater than 0.")
                    continue

                return nums_in_list

            except ValueError:
                print ("Please enter an integer.")
循环程序的额外外接程序 主要部分: 调用上面定义的函数 显示输出

    if __name__ == '__main__':
        while True:
            original = genterate_list(get_user_input())
            print("Original Fabonacci")

            for x in original:
                print(x)

            cube_funtion = lambda value : value ** 3
            cube_result = map(cube_funtion, original)
            print("Cubed Values")
            list(map(print, cube_result))
            if loop_program() == "N":
                break

我刚刚运行了这个,它在HackerRank上成功运行 { 多维数据集=lambda x:x**3#完成lambda函数

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(list(map(cube, fibonacci(n))))
def fibonacci(n):
#返回斐波那契数的列表
初始列表=[]
对于范围(n)中的i:
如果i<2:
初始列表+=[i]
其他:
初始列表+=[初始列表[-1]+初始列表[-2]]
返回初始列表
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=int(输入())
打印(列表(映射(立方体,斐波那契(n)))

}

我刚刚运行了这个程序,它在HackerRank上运行成功 { 多维数据集=lambda x:x**3#完成lambda函数

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(list(map(cube, fibonacci(n))))
def fibonacci(n):
#返回斐波那契数的列表
初始列表=[]
对于范围(n)中的i:
如果i<2:
初始列表+=[i]
其他:
初始列表+=[初始列表[-1]+初始列表[-2]]
返回初始列表
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=int(输入())
打印(列表(映射(立方体,斐波那契(n)))

}

再次,用户无法编辑该行代码。再次,用户无法编辑该行代码。如果您无法在
\uuuuu main\uuuuuuu
中更改代码,则只能使用
Python 2
而不是
Python 3
来获得正确的结果。(或者覆盖函数
map
)它是如何与Python 2一起工作的?在Python 2中,map函数返回一个列表而不是一个map对象,因此应该按原样工作。非常感谢!这说明了如果不能在
\uuuu main\uuuu
中更改代码,那么只能使用
python2
而不是
python3
来获得正确的结果。(或者覆盖函数
map
)它是如何与Python 2一起工作的?在Python 2中,map函数返回一个列表而不是一个map对象,因此应该按原样工作。非常感谢!这澄清了问题