无法在列表理解中使用*=python运算符

2024-10-01 17:37:02 发布

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

我不知道为什么我不能在列表理解中使用*=运算符,而在for循环中使用它是可以的?在

def funcLC(l):
    ans = 1
    [ans *= x for x in l if x < 0]
    return ans

SyntaxError: invalid syntax

def funcFor(l):
    ans = 1
    for x in l:
        if x < 0:
            start *= x
    return ans

Tags: in列表forreturnifdef运算符start
2条回答

赋值运算符(及其所有变体)在Python中形成了一个语句,而不是一个表达式。不幸的是,列表理解(以及其他理解,如set、dictionary和generator)只支持表达式。在

或者,您可以使用^{}^{}来接近它:

>>> from operator import mul
>>> from functools import reduce  # needed if Python 3.x
>>>
>>> l = [-1, 2, 4, 1, -3]
>>> reduce(mul, filter(lambda x: x < 0, l), 1)
3

相关提示:使用reduce()的一个指标是,您有多个值,但需要从中产生一个值。在

相关问题 更多 >

    热门问题