繁体   English   中英

Python:列表理解无效语法错误

[英]Python: List Comprehension invalid syntax error

我正在尝试在一行中重新创建此循环:

results = [149, 0, 128, 0, 0, 0, 1, 0, 0, 14, 0, 2] 

for x in results:
  total = x + total

print(total)

但是当我这样做时:

 y = [total = total + x for x in results]

我收到一个错误:

y = [total = total + x for x in results]                                                                                                                                       
                   ^                                                                                                                                                                   
SyntaxError: invalid syntax  

我想念什么? 谢谢。

您只需要使用一个函数:

results = [149, 0, 128, 0, 0, 0, 1, 0, 0, 14, 0, 2]
res = sum(results)
print(res)

要么

from functools import reduce
results = reduce(lambda x, y: x + y, results)
print(results)

如果您坚持使用列表理解 ,那会麻烦又不必要,因为它将创建另一个列表,最终导致使用相同的方法使用函数来获取总和

出现问题是因为python中的单行返回一个数组,它不是一种干净的方法来引用它自己创建的对象。

您不能求和,可以将数字相乘(但每个数字都可以)

In [2]: y = [x*x  for x in results]

In [3]: y
Out[3]: [22201, 0, 16384, 0, 0, 0, 1, 0, 0, 196, 0, 4]

实现所需目标的最佳方法是使用其内置方法sum

In [9]: sum(results)
Out[9]: 294

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM