如何使列表中的正数平方?

2024-05-01 21:21:14 发布

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

我只想把列表中的正数平方。但当我试着用这个代码时,它会把它们都平方

def squarethis(numbers):
for n in numbers:
    if n > 0:
        return[n ** 2 for n in numbers]

print(squarethis([1, 3, 5, -81]))

为什么它是所有数字的平方?if语句应该过滤掉负数,对吗?在


Tags: 代码in列表forreturnifdef数字
2条回答

纯功能的替代品->

>>> 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平方中的每个值返回。相反,您可以在列表理解本身中进行过滤,然后返回列表。在

相关问题 更多 >