如何仅排列列表中的正数?

Sam*_*ink 0 python math int list

我试图只对列表中的正数进行平方.但是当我尝试代码时,它会将所有代码都放在一边

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

print(squarethis([1, 3, 5, -81]))
Run Code Online (Sandbox Code Playgroud)

为什么它对所有数字都平方?if语句应该过滤掉负片吗?

ele*_*han 7

只需使用单个列表理解:

def squarethis(numbers):
    return [n ** 2 for n in numbers if n > 0]
Run Code Online (Sandbox Code Playgroud)

你在提供的代码中所做的是检查第一个值numbers是否为> 0,如果是,则返回列表理解中的每个numbers平方值.相反,您可以在列表推导中进行过滤,并返回列表.