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

时间:2016-09-22 23:44:15

标签: python list-comprehension

我不确定为什么我无法在列表推导中使用*=运算符,在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

2 个答案:

答案 0 :(得分:4)

赋值运算符(及其上的所有变体)在Python中形成语句,而不是表达式。遗憾的是,列表推导(以及其他理解,如集合,字典和生成器)仅支持表达式。

答案 1 :(得分:3)

或者,您可以使用reduce()filter()

来处理它
>>> 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()的指标之一是您有多个值,但需要从中生成一个值。