Python 3.x Python 3中的Filter/map/lambda

Python 3.x Python 3中的Filter/map/lambda,python-3.x,lambda,Python 3.x,Lambda,我在Python3中的lambda函数方面遇到了一些问题。 看看我到目前为止做了什么 odd_lst = [] for n in range(len(lst)): if lst[n] % 2 != 0: odd_lst.append(lst[n]**2) 这是原始代码。我需要使用filter()和map()将for循环语句替换为一行代码。 我尝试使用以下行: odd_lst=list(filter(lambda x: x**2 if (x%2)!=0, lst)) 但

我在Python3中的lambda函数方面遇到了一些问题。 看看我到目前为止做了什么

odd_lst = []
for n in range(len(lst)):
    if lst[n] % 2 != 0:
        odd_lst.append(lst[n]**2)
这是原始代码。我需要使用filter()和map()将for循环语句替换为一行代码。 我尝试使用以下行:

odd_lst=list(filter(lambda x: x**2 if (x%2)!=0, lst))
但这给了我一个错误:

odd_lst=list(filter(lambda x: x**2 if (x%2)!=0, lst))
                                              ^
SyntaxError: invalid syntax

我对这个概念还不熟悉。请说明我做错了什么。

您的任务是使用
filter()
map()
从输入列表中选择奇数,将这些数字平方,然后仅用这些平方生成一个新列表

因此,假设您已经定义了一个输入
lst
,第一步就是过滤掉奇数:

赔率=过滤器(λx:x%2!=0,lst)
然后你需要得到这些奇数的平方:

squares=map(λx:x**2,赔率)
然后需要将这些值放入结果列表中:

odd_lst=列表(正方形)
现在,您有望看到如何将这一切合并到一行中:

odd_lst=list(映射(lambda x:x**2,过滤器(lambda x:x%2!=0,lst)))

希望对您有所帮助,您的任务是使用
filter()
map()
从输入列表中选择奇数,对这些数字进行平方运算,并用这些平方运算生成一个新列表

因此,假设您已经定义了一个输入
lst
,第一步就是过滤掉奇数:

赔率=过滤器(λx:x%2!=0,lst)
然后你需要得到这些奇数的平方:

squares=map(λx:x**2,赔率)
然后需要将这些值放入结果列表中:

odd_lst=列表(正方形)
现在,您有望看到如何将这一切合并到一行中:

odd_lst=list(映射(lambda x:x**2,过滤器(lambda x:x%2!=0,lst)))

希望这有帮助

错误是什么?@smac89它给出了一个语法错误。请在问题中包含完整的错误消息。SyntaxError可能指的是任何东西请在您的问题中包含错误。就像在编辑你的问题,把你收到的全部错误信息放在里面谢谢。将来,当你问一个关于你所遇到的错误的问题时,请记住始终包含你所收到的错误消息。如果我们知道错误是什么,就更容易给出答案,因为错误的可能性很多。特别是,python中的
SyntaxError
可能意味着从错误的缩进到不正确的参数,再到…无论python解释器无法理解什么是错误?@smac89它给出了一个语法错误。请在您的问题中包含完整的错误消息。SyntaxError可能指的是任何东西请在您的问题中包含错误。就像在编辑你的问题,把你收到的全部错误信息放在里面谢谢。将来,当你问一个关于你所遇到的错误的问题时,请记住始终包含你所收到的错误消息。如果我们知道错误是什么,就更容易给出答案,因为错误的可能性很多。特别是,python中的SyntaxError可能意味着从错误的缩进到不正确的参数,再到……不管python解释器无法理解什么,最好将问题分解成小块,而不是一次完成所有工作。你在任何时候进行的代码/逻辑越少,如果它不起作用,就越容易找出哪里出了问题。嘿,快速更新,最后的答案中还需要一个括号。正确-现在已修复将问题分解成小块总是好的,而不是尝试一次解决所有问题。在任何时候进行的代码/逻辑越少,就越容易发现如果它不起作用会出现什么问题。嘿,快速更新,在最终答案中还需要一个括号。正确-现在修复