import math
lists = [1,[2,3],4]
total = 0
for i in range(len(lists)):
total += sum(i)
print(total)
我要打印出来
>>>10
但是会抛出错误。
我希望它能够添加所有数字,包括嵌套 if 中的数字。
import math
lists = [1,[2,3],4]
total = 0
for i in range(len(lists)):
total += sum(i)
print(total)
我要打印出来
>>>10
但是会抛出错误。
我希望它能够添加所有数字,包括嵌套 if 中的数字。
在您的程序中,for i in range(len(lists))
- 评估为 3,因为该lists
对象具有 3 个元素。并且在循环中total += sum(i)
它会尝试执行int
+list
操作,这会导致错误。因此,您需要检查类型,然后添加各个元素。
def list_sum(L):
total = 0
for i in L:
if isinstance(i, list):
total += list_sum(i)
else:
total += i
return total
这是@pavelanossov 的评论 - 以更优雅的方式做同样的事情
sum(sum(i) if isinstance(i, list) else i for i in L)
您可以使用 compiler.ast 模块中的 flatten 函数来展平列表。然后简单地总结所有元素。
>>> lists = [1,[2,3],4]
>>> from compiler.ast import flatten
>>> sum(flatten(lists))
10
编辑:仅适用于 Python 2.x
numpy.hstack() 函数用于水平堆叠输入数组的序列(即按列)以制作单个数组,这是我们在 OP 示例中所需要的
import numpy as np
list1 = [1,[2,3],4]
M = np.hstack(list1)
print(np.sum(M))
给
10
[Program finished]