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
sum(sum(i) if isinstance(i, list) else i for i in L)
sum(sum(i) if isinstance(i, list) else i for i in L)
- Pavel Anossovsum(sum(i) if isinstance(i, list) else i for i in L)
只适用于至多两层嵌套的列表。这个列表失败了:L = ([[1, 1, 1], [1, [1, 1]], 1])
。虽然不够优雅,但是 @karthikr 上面的函数 list_sum(L)
对于任意层级的列表都可以工作,因为它使用了递归。 - ColoradoGranite>>> 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]
2
和3
的和吗? - user1786283