2024-05-01 21:21:14 发布
网友
我只想把列表中的正数平方。但当我试着用这个代码时,它会把它们都平方
def squarethis(numbers): for n in numbers: if n > 0: return[n ** 2 for n in numbers] print(squarethis([1, 3, 5, -81]))
为什么它是所有数字的平方?if语句应该过滤掉负数,对吗?在
纯功能的替代品->
>>> map(lambda x: x**2, filter(lambda x: x > 0, [1, 2, 3, -1, -2, -3])) [1, 4, 9]
只需使用一个列表理解:
def squarethis(numbers): return [n ** 2 for n in numbers if n > 0]
您在提供的代码中所做的是检查numbers中的第一个值是否为> 0,如果是,则返回列表理解,并将numbers平方中的每个值返回。相反,您可以在列表理解本身中进行过滤,然后返回列表。在
numbers
> 0
纯功能的替代品->
只需使用一个列表理解:
您在提供的代码中所做的是检查
numbers
中的第一个值是否为> 0
,如果是,则返回列表理解,并将numbers
平方中的每个值返回。相反,您可以在列表理解本身中进行过滤,然后返回列表。在相关问题 更多 >
编程相关推荐