如何为该列表修复“ SyntaxError:无效语法”?

时间:2020-09-20 00:07:22

标签: python list

这是一个非常简单的代码:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = 1
c = [b*=i for i in a]
print(c)

我试图将列表a中的所有数字相乘,但是在第3行出现语法错误。如何修复代码?

3 个答案:

答案 0 :(得分:2)

=和类似的增强版本不是计算结果为值的表达式。问题是that's what list comprehensions are expecting:一个表达式。

理解由单个表达式组成,后跟至少一个for子句和零个或多个for或if子句。

为此,您需要Python 3.8和assignment expressions

[b := b * i for i in a]

没有结合了*:=的增强版本。

不过请考虑使用完整循环。

答案 1 :(得分:1)

对此的另一个选择是:

import operator
from functools import reduce

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

b = reduce(operator.mul, a, 1)

print(b)

顺便说一下,这个问题是这样引用的:

What's the function like sum() but for multiplication? product()?

编辑:如@ShadowRanger所述,从Python 3.8开始,您可以将其简化为:

import math

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

b = math.prod(a)

print(b)

答案 2 :(得分:0)

如评论中所述,您不能在列表理解内进行项目分配。你能做的就是

b=1
for x in a:
    b*=x
print(b)